[Erp5-report] r45376 jm - /erp5/trunk/products/ERP5Type/Tool/PropertySheetTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Apr 13 14:42:37 CEST 2011


Author: jm
Date: Wed Apr 13 14:42:36 2011
New Revision: 45376

URL: http://svn.erp5.org?rev=45376&view=rev
Log:
Fix possible unauthorized error when upgrading a site that has no property sheet tool

Modified:
    erp5/trunk/products/ERP5Type/Tool/PropertySheetTool.py

Modified: erp5/trunk/products/ERP5Type/Tool/PropertySheetTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Tool/PropertySheetTool.py?rev=45376&r1=45375&r2=45376&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Tool/PropertySheetTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Tool/PropertySheetTool.py [utf8] Wed Apr 13 14:42:36 2011
@@ -33,6 +33,7 @@ from AccessControl import ClassSecurityI
 from Products.ERP5Type.Tool.BaseTool import BaseTool
 from Products.ERP5Type import Permissions
 from Products.ERP5Type.Accessor import Translation
+from Products.ERP5Type.UnrestrictedMethod import unrestricted_apply
 from Products.CMFCore.utils import getToolByName
 from Products.ERP5Type.Core.PropertySheet import PropertySheet as PropertySheetDocument
 from zExceptions import BadRequest
@@ -74,12 +75,16 @@ class PropertySheetTool(BaseTool):
       'SQLIdGenerator',
     ))
     def install():
-      template_tool = self.getPortalObject().portal_templates
+      from ZPublisher.BaseRequest import RequestContainer
+      portal = self.getPortalObject()
+      # BusinessTemplate.install needs a request
+      template_tool = portal.aq_base.__of__(portal.aq_parent.__of__(
+        RequestContainer(REQUEST=get_request()))).portal_templates
       if template_tool.getInstalledBusinessTemplate(bt_name) is None:
         from Products.ERP5.ERP5Site import getBootstrapBusinessTemplateUrl
         url = getBootstrapBusinessTemplateUrl(bt_name)
-        template_tool.download(url).activate().install()
-    transaction.get().addBeforeCommitHook(install)
+        template_tool.download(url).install()
+    transaction.get().addBeforeCommitHook(unrestricted_apply, (install,))
 
   security.declarePublic('getTranslationDomainNameList')
   def getTranslationDomainNameList(self):



More information about the Erp5-report mailing list