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') _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins