[Checkins] SVN: zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py preliminary collection support

Andreas Jung andreas at andreas-jung.com
Mon Jul 5 05:18:22 EDT 2010


Log message for revision 114195:
  preliminary collection support
  

Changed:
  U   zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py

-=-
Modified: zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py
===================================================================
--- zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py	2010-07-05 08:55:38 UTC (rev 114194)
+++ zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py	2010-07-05 09:18:21 UTC (rev 114195)
@@ -25,6 +25,7 @@
         self.db = getattr(self.conn, database)
         self.metadata = self.db.metadata
         self.revisions = self.db.revisions
+        self.collections = self.db.collections
 
     def __del__(self):
         self.conn.end_request()
@@ -32,6 +33,7 @@
     def clear(self):
         self.metadata.remove()
         self.revisions.remove()
+        self.collections.remove()
 
     def store(self, id, version_data, revision_metadata, collection_content=[]):
         id_entry = self.metadata.find_one({'_oid' : id})
@@ -40,12 +42,17 @@
             self.metadata.save({'_oid' : id, '_rev' : 0})
         else:
             revision = id_entry['_rev'] + 1
-            self.metadata.update({'_oid' : id}, 
+            self.metadata.update({'_oid' : id},
                                  {'$set' : {'_rev' : revision}} )
 
+        if collection_content:
+            self.collections.save({'_oid' : id,
+                                   '_rev' : revision,
+                                   'collection_content' : collection_content})
+
         revision_metadata = anyjson.deserialize(revision_metadata)
         revision_metadata['created'] = datetime.utcnow().isoformat()
-        data = dict(_oid=id, 
+        data = dict(_oid=id,
                     _rev=revision,
                     _data=anyjson.deserialize(version_data),
                     _metadata=revision_metadata,
@@ -68,6 +75,7 @@
             raise errors.NoDocumentFound('No document with ID %s found' % id)
         self.metadata.remove({'_oid' : id})
         self.revisions.remove({'_oid' : id})
+        self.collections.remove({'_oid' : id})
 
     def has_revision(self, id, revision):
         return bool(self.revisions.find_one({'_oid' : id, '_rev' : revision}))



More information about the checkins mailing list