diff idavoll/backend.py @ 84:34be83a0bd2e

Implement instant nodes. Fix generation of item ids when not provided on publish.
author Ralph Meijer <ralphm@ik.nu>
date Tue, 09 Nov 2004 15:58:06 +0000
parents ec354aab3949
children ec557449d1aa
line wrap: on
line diff
--- a/idavoll/backend.py	Tue Nov 09 15:57:23 2004 +0000
+++ b/idavoll/backend.py	Tue Nov 09 15:58:06 2004 +0000
@@ -3,6 +3,8 @@
 from twisted.application import service
 from twisted.xish import utility
 from twisted.internet import defer
+import sha
+import time
 
 class Error(Exception):
     msg = ''
@@ -185,8 +187,9 @@
 
         if persist_items or deliver_payloads:
             for item in items:
-                if item["id"] is None:
-                    item["id"] = 'random'   # FIXME
+                if not item.getAttribute("id"):
+                    item["id"] = sha.new(str(time.time()) +
+                                         requestor.full()).hexdigest()
 
         if persist_items:
             d = self.parent.storage.store_items(node_id, items,
@@ -271,11 +274,12 @@
     __implements__ = INodeCreationService,
 
     def supports_instant_nodes(self):
-        return False
+        return True
 
     def create_node(self, node_id, requestor):
         if not node_id:
-            raise NoInstantNodes
+            node_id = 'generic/%s' % sha.new(str(time.time()) +
+                                             requestor.full()).hexdigest()
 
         d = self.parent.storage.create_node(node_id, requestor)
         d.addCallback(lambda _: node_id)