[Zodb-checkins] CVS: Packages/bsddb3Storage - Full.py:1.26

barry@digicool.com barry@digicool.com
Fri, 15 Jun 2001 14:29:37 -0400 (EDT)


Update of /cvs-repository/Packages/bsddb3Storage/bsddb3Storage
In directory korak.digicool.com:/tmp/cvs-serv26524

Modified Files:
	Full.py 
Log Message:
history(): Jim says that the `version' argument is a bug, and should
be ignored.  This simplifies the logic a bit.



--- Updated File Full.py in package Packages/bsddb3Storage --
--- Full.py	2001/06/14 20:47:37	1.25
+++ Full.py	2001/06/15 18:29:37	1.26
@@ -845,49 +845,49 @@
     def history(self, oid, version=None, size=1, filter=None):
         self._lock_acquire()
         try:
-            # Find the vid for the version
-            if version is None:
-                tvid = None
-                version = ''
-            elif version == '':
-                tvid = 0
-            else:
-                # BAW: for now, let KeyErrors percolate up
-                tvid = self._vids[version]
-            # Start with the most recent revision of the object, then search
-            # the transaction records backwards finding revisions in the
-            # selected version.
+            # Jim says:
+            #
+            #     This documentation is wrong. I think that the version should
+            #     be ignored.  It really shouldn't be in the signature. Zope
+            #     never passes the version argument.
+            #
+            # so we ignore `version', which makes our lives a bit easier.  We
+            # start with the most recent revision of the object, then search
+            # the transaction records backwards until we find enough records.
             history = []
             revid = self._serials[oid]
             # BAW: Again, let KeyErrors percolate up
             while len(history) < size:
+                # Some information comes out of the revision metadata...
                 vid, nvrevid, lrevid, previd = struct.unpack(
                     '>8s8s8s8s', self._metadata[oid+revid])
-                if tvid is None or vid == ZERO or tvid == vid:
-                    # Get transaction metadata, which we need to fill in the
-                    # appropriate HistoryEntry slots.
-                    txnmeta = self._txnMetadata[revid]
-                    userlen, desclen = struct.unpack('>II', txnmeta[1:9])
-                    user = txnmeta[9:9+userlen]
-                    desc = txnmeta[9+userlen:9+userlen+desclen]
-                    # Now get the pickle size
-                    data = self._pickles[oid+lrevid]
-                    # Create a HistoryEntry structure, which turns out to be a
-                    # dictionary with some specifically named entries (BAW:
-                    # although this poorly documented).
-                    if vid == ZERO:
-                        retvers = ''
-                    else:
-                        retvers = version
-                    d = {'time'       : TimeStamp(revid).timeTime(),
-                         'user_name'  : user,
-                         'description': desc,
-                         'serial'     : revid,
-                         'version'    : retvers,
-                         'size'       : len(data),
-                         }
-                    if filter is None or filter(d):
-                        history.append(d)
+                # ...while other information comes out of the transaction
+                # metadata.
+                txnmeta = self._txnMetadata[revid]
+                userlen, desclen = struct.unpack('>II', txnmeta[1:9])
+                user = txnmeta[9:9+userlen]
+                desc = txnmeta[9+userlen:9+userlen+desclen]
+                # Now get the pickle size
+                data = self._pickles[oid+lrevid]
+                # Create a HistoryEntry structure, which turns out to be a
+                # dictionary with some specifically named entries (BAW:
+                # although this poorly documented).
+                if vid == ZERO:
+                    retvers = ''
+                else:
+                    retvers = self._versions[vid]
+                # The HistoryEntry object
+                d = {'time'       : TimeStamp(revid).timeTime(),
+                     'user_name'  : user,
+                     'description': desc,
+                     'serial'     : revid,
+                     'version'    : retvers,
+                     'size'       : len(data),
+                     }
+                if filter is None or filter(d):
+                    history.append(d)
+                # Chase the link backwards to the next most historical
+                # revision, stopping when we've reached the end.
                 if previd == ZERO:
                     break
                 revid = previd