[Checkins] SVN: zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/ Update class meta information as well. Remove unused and useless code.

Sylvain Viollon sylvain at infrae.com
Thu Nov 5 09:52:23 EST 2009


Log message for revision 105498:
  Update class meta information as well. Remove unused and useless code.
  
  

Changed:
  U   zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/serialize.py
  U   zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/update.py

-=-
Modified: zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/serialize.py
===================================================================
--- zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/serialize.py	2009-11-05 14:33:18 UTC (rev 105497)
+++ zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/serialize.py	2009-11-05 14:52:22 UTC (rev 105498)
@@ -19,7 +19,6 @@
     """
 
     def __init__(self, changes):
-        self.__cache = dict()
         self.__changes = dict()
         for old, new in changes.iteritems():
             self.__changes[tuple(old.split(' '))] = tuple(new.split(' '))
@@ -38,6 +37,7 @@
                 klass = self.__changes[klass]
                 self.__changed = True
             return ZODBReference((oid, klass))
+        # TODO multidatabase ['m'], (database, oid, klass)
         return ZODBReference(reference)
 
     def __unpickler(self, pickle):
@@ -57,16 +57,25 @@
         pickler.clear_memo()
         return pickler
 
+    def __update_class_meta(self, class_meta):
+        if isinstance(class_meta, tuple):
+            klass, args = class_meta
+            if isinstance(klass, tuple):
+                if klass in self.__changes:
+                    self.__changed = True
+                    return self.__changes[klass], args
+        return class_meta
+
     def rename(self, input_file):
         self.__changed = False
-        self.__cache.clear()
 
         unpickler = self.__unpickler(input_file)
         class_meta = unpickler.load()
         data = unpickler.load()
 
+        class_meta = self.__update_class_meta(class_meta)
+
         if not self.__changed:
-            input_file.seek(0)
             return None
 
         output_file = cStringIO.StringIO()
@@ -75,5 +84,4 @@
         pickler.dump(data)
 
         output_file.truncate()
-        output_file.seek(0)
         return output_file

Modified: zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/update.py
===================================================================
--- zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/update.py	2009-11-05 14:33:18 UTC (rev 105497)
+++ zodbupdate/branches/sylvain-persistent-load/src/zodbupdate/update.py	2009-11-05 14:52:22 UTC (rev 105498)
@@ -36,13 +36,13 @@
         self.storage = storage
         self.update = zodbupdate.serialize.ObjectRenamer(renames or {})
 
-    def _new_transaction(self):
+    def __new_transaction(self):
         t = transaction.Transaction()
         self.storage.tpc_begin(t)
         t.note('Updated factory references using `zodbupdate`.')
         return t
 
-    def _commit_transaction(self, t, changed):
+    def __commit_transaction(self, t, changed):
         if self.dry or not changed:
             logger.info('Dry run selected or no changes, aborting transaction.')
             self.storage.tpc_abort(t)
@@ -53,22 +53,23 @@
 
     def __call__(self):
         count = 0
-        t = self._new_transaction()
+        t = self.__new_transaction()
 
         for oid, serial, current in self.records:
             new = self.update.rename(current)
             if new is None:
                 continue
+
             logger.debug('Updated %s' % ZODB.utils.oid_repr(oid))
             self.storage.store(oid, serial, new.getvalue(), '', t)
             count += 1
 
             if count > TRANSACTION_COUNT:
                 count = 0
-                self._commit_transaction(t, True)
-                t = self._new_transaction()
+                self.__commit_transaction(t, True)
+                t = self.__new_transaction()
 
-        self._commit_transaction(t, count != 0)
+        self.__commit_transaction(t, count != 0)
 
 
     @property



More information about the checkins mailing list