[Erp5-report] r35105 jerome - /erp5/trunk/products/ERP5Form/PreferenceTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri May 7 13:49:41 CEST 2010


Author: jerome
Date: Fri May  7 13:49:41 2010
New Revision: 35105

URL: http://svn.erp5.org?rev=35105&view=rev
Log:
API to create a preference for any user

Modified:
    erp5/trunk/products/ERP5Form/PreferenceTool.py

Modified: erp5/trunk/products/ERP5Form/PreferenceTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/PreferenceTool.py?rev=35105&r1=35104&r2=35105&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PreferenceTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/PreferenceTool.py [utf8] Fri May  7 13:49:41 2010
@@ -27,7 +27,9 @@
 #
 ##############################################################################
 
-from AccessControl import ClassSecurityInfo, getSecurityManager
+from AccessControl import ClassSecurityInfo
+from AccessControl.SecurityManagement import getSecurityManager,\
+                          setSecurityManager, newSecurityManager
 from MethodObject import Method
 from Products.ERP5Type.Globals import InitializeClass, DTMLFile
 from zLOG import LOG, PROBLEM
@@ -274,5 +276,21 @@
           template_list.append(template)
     return template_list
 
+  security.declareProtected(Permissions.ManagePortal,
+                            'createPreferenceForUser')
+  def createPreferenceForUser(self, username):
+    """Creates a preference for a given user.
+    """
+    security_manager = getSecurityManager()
+    try:
+      user_folder = self.getPortalObject().acl_users
+      user = user_folder.getUserById(username)
+      if user is None:
+        raise TypeError("User %r not found" % (username, ))
+      newSecurityManager(None, user.__of__(user_folder))
+      return self.newContent(portal_type='Preference')
+    finally:
+      setSecurityManager(security_manager)
+
 InitializeClass(PreferenceTool)
 




More information about the Erp5-report mailing list