From 7204ea052d276b487505d60de54e0b2e873b9eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Fri, 7 May 2010 11:49:41 +0000 Subject: [PATCH] API to create a preference for any user git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@35105 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/PreferenceTool.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/product/ERP5Form/PreferenceTool.py b/product/ERP5Form/PreferenceTool.py index a25e26fd90..8292ccf13b 100644 --- a/product/ERP5Form/PreferenceTool.py +++ b/product/ERP5Form/PreferenceTool.py @@ -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 @@ class PreferenceTool(BaseTool): 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) -- 2.30.9