[Erp5-report] r13059 - /erp5/trunk/products/ERP5Type/Base.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Feb 26 23:03:21 CET 2007


Author: jp
Date: Mon Feb 26 23:03:20 2007
New Revision: 13059

URL: http://svn.erp5.org?rev=13059&view=rev
Log:
Added method getViewPermissionOwner to retrieved Owner user ID whenever Owner has View permission. Please suggest better name if you can.

Modified:
    erp5/trunk/products/ERP5Type/Base.py

Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=13059&r1=13058&r2=13059&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Base.py Mon Feb 26 23:03:20 2007
@@ -33,6 +33,7 @@
 from Globals import InitializeClass, DTMLFile, PersistentMapping
 from AccessControl import ClassSecurityInfo
 from AccessControl.Permission import pname, Permission
+from AccessControl.PermissionRole import rolesForPermissionOn
 from Acquisition import aq_base, aq_inner, aq_acquire, aq_chain
 import OFS.History
 
@@ -357,11 +358,14 @@
                                       method_id)
             else:
               # Wrap method into WorkflowMethod is needed
-              if getattr(klass,method_id,None) is not None:
+              if getattr(klass, method_id, None) is not None:
                 method = getattr(klass, method_id)
                 if callable(method):
                   if not isinstance(method, WorkflowMethod):
                     method = WorkflowMethod(method, method_id)
+                    # We must set the method on the klass
+                    # because klass has priority in lookup over
+                    # _ac_dynamic
                     setattr(klass, method_id, method)
               else:
                 method = getattr(prop_holder, method_id)
@@ -1419,6 +1423,18 @@
 
     return tuple(permission_list)
 
+  security.declareProtected( Permissions.AccessContentsInformation, 'getViewPermissionOwner' )
+  def getViewPermissionOwner(self):
+    """
+      Returns the user ID of the owner if Owner role
+      has View permission. Returns None else.
+    """
+    path, user_id = self.getOwnerTuple()
+    if 'Owner' in rolesForPermissionOn(Permissions.View, self):
+      path, user_id = self.getOwnerTuple()
+      return user_id
+    return None
+
   # Private accessors for the implementation of relations based on
   # categories
   security.declareProtected( Permissions.ModifyPortalContent, '_setValue' )




More information about the Erp5-report mailing list