[Zope-Checkins] SVN: Zope/trunk/src/App/Undo.py Merged r110490:110491 from 2.12 branch

Hanno Schlichting hannosch at hannosch.eu
Mon Apr 5 12:36:57 EDT 2010


Log message for revision 110494:
  Merged r110490:110491 from 2.12 branch
  

Changed:
  U   Zope/trunk/src/App/Undo.py

-=-
Modified: Zope/trunk/src/App/Undo.py
===================================================================
--- Zope/trunk/src/App/Undo.py	2010-04-05 16:31:13 UTC (rev 110493)
+++ Zope/trunk/src/App/Undo.py	2010-04-05 16:36:57 UTC (rev 110494)
@@ -15,7 +15,6 @@
 $Id$
 """
 
-from Acquisition import aq_base
 from Acquisition import aq_inner
 from Acquisition import aq_parent
 from AccessControl import getSecurityManager
@@ -30,6 +29,7 @@
 from ZopeUndo.Prefix import Prefix
 from zope.interface import implements
 
+
 class UndoSupport(ExtensionClass.Base):
 
     implements(IUndoSupport)
@@ -37,8 +37,8 @@
     security = ClassSecurityInfo()
 
     manage_options=(
-        {'label':'Undo', 'action':'manage_UndoForm',
-         'help':('OFSP','Undo.stx')},
+        {'label': 'Undo', 'action': 'manage_UndoForm',
+         'help': ('OFSP', 'Undo.stx')},
         )
 
     security.declareProtected(undo_changes, 'manage_UndoForm')
@@ -47,20 +47,25 @@
         globals(),
         PrincipiaUndoBatchSize=20,
         first_transaction=0,
-        last_transaction=20
+        last_transaction=20,
         )
 
     def get_request_var_or_attr(self, name, default):
         if hasattr(self, 'REQUEST'):
             REQUEST=self.REQUEST
-            if REQUEST.has_key(name): return REQUEST[name]
-            if hasattr(self, name): v=getattr(self, name)
-            else: v=default
-            REQUEST[name]=v
+            if REQUEST.has_key(name):
+                return REQUEST[name]
+            if hasattr(self, name):
+                v = getattr(self, name)
+            else:
+                v = default
+            REQUEST[name] = v
             return v
         else:
-            if hasattr(self, name): v=getattr(self, name)
-            else: v=default
+            if hasattr(self, name):
+                v = getattr(self, name)
+            else:
+                v = default
             return v
 
     security.declareProtected(undo_changes, 'undoable_transactions')
@@ -69,58 +74,61 @@
                               PrincipiaUndoBatchSize=None):
 
         if first_transaction is None:
-            first_transaction=self.get_request_var_or_attr(
+            first_transaction = self.get_request_var_or_attr(
                 'first_transaction', 0)
 
         if PrincipiaUndoBatchSize is None:
-            PrincipiaUndoBatchSize=self.get_request_var_or_attr(
+            PrincipiaUndoBatchSize = self.get_request_var_or_attr(
                 'PrincipiaUndoBatchSize', 20)
 
         if last_transaction is None:
-            last_transaction=self.get_request_var_or_attr(
+            last_transaction = self.get_request_var_or_attr(
                 'last_transaction',
                 first_transaction+PrincipiaUndoBatchSize)
 
-        spec={}
+        spec = {}
 
         # A user is allowed to undo transactions that were initiated
         # by any member of a user folder in the place where the user
         # is defined.
         user = getSecurityManager().getUser()
-        if hasattr(user, 'aq_parent'):
-            path = '/'.join(user.aq_parent.getPhysicalPath()[1:-1])
+        user_parent = aq_parent(user)
+        if user_parent is not None:
+            path = '/'.join(user_parent.getPhysicalPath()[1:-1])
         else:
-            path=''
-        if path: spec['user_name']=Prefix(path)
+            path = ''
+        if path:
+            spec['user_name'] = Prefix(path)
 
         if getattr(aq_parent(aq_inner(self)), '_p_jar', None) == self._p_jar:
             # We only want to undo things done here (and not in mounted
             # databases)
-            opath='/'.join(self.getPhysicalPath())
+            opath = '/'.join(self.getPhysicalPath())
         else:
             # Special case: at the root of a database,
             # allow undo of any path.
             opath = None
-        if opath: spec['description']=Prefix(opath)
+        if opath:
+            spec['description'] = Prefix(opath)
 
         r = self._p_jar.db().undoInfo(
             first_transaction, last_transaction, spec)
 
         for d in r:
-            d['time']=t=DateTime(d['time'])
+            d['time'] = t = DateTime(d['time'])
             desc = d['description']
-            tid=d['id']
+            tid = d['id']
             if desc:
                 desc = desc.split()
-                d1=desc[0]
+                d1 = desc[0]
                 desc = ''.join(desc[1:])
-                if len(desc) > 60: desc = desc[:56]+' ...'
+                if len(desc) > 60:
+                    desc = desc[:56] + ' ...'
                 tid = "%s %s %s %s" % (encode64(tid), t, d1, desc)
             else:
                 tid = "%s %s" % (encode64(tid), t)
-            d['id']=tid
+            d['id'] = tid
 
-
         return r
 
     security.declareProtected(undo_changes, 'manage_undo_transactions')
@@ -136,7 +144,8 @@
                 tid=decode64(tid[0])
                 undo(tid)
 
-        if REQUEST is None: return
+        if REQUEST is None:
+            return
         REQUEST['RESPONSE'].redirect("%s/manage_UndoForm" % REQUEST['URL1'])
         return ''
 
@@ -147,13 +156,17 @@
 
 import binascii
 
+
 def encode64(s, b2a=binascii.b2a_base64):
-    if len(s) < 58: return b2a(s)
-    r=[]; a=r.append
+    if len(s) < 58:
+        return b2a(s)
+    r = []
+    a = r.append
     for i in range(0, len(s), 57):
         a(b2a(s[i:i+57])[:-1])
     return ''.join(r)
 
+
 def decode64(s, a2b=binascii.a2b_base64):
     __traceback_info__=len(s), `s`
     return a2b(s+'\n')



More information about the Zope-Checkins mailing list