[Erp5-report] r35108 jerome - in /erp5/trunk/products: ERP5Form/ ERP5Type/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri May 7 14:25:28 CEST 2010


Author: jerome
Date: Fri May  7 14:25:21 2010
New Revision: 35108

URL: http://svn.erp5.org?rev=35108&view=rev
Log:
generate preference tool accessors from preference tool itself

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

Modified: erp5/trunk/products/ERP5Form/PreferenceTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/PreferenceTool.py?rev=35108&r1=35107&r2=35108&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PreferenceTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/PreferenceTool.py [utf8] Fri May  7 14:25:21 2010
@@ -158,6 +158,8 @@
   allowed_types = ( 'ERP5 Preference',)
   security      = ClassSecurityInfo()
 
+  aq_preference_generated = False
+
   security.declareProtected(
        Permissions.ManagePortal, 'manage_overview' )
   manage_overview = DTMLFile( 'explainPreferenceTool', _dtmldir )
@@ -186,6 +188,21 @@
     if method is not None:
       return method(default)
     return default
+
+  def _aq_dynamic(self, id):
+    base_value = PreferenceTool.inheritedAttribute('_aq_dynamic')(self, id)
+    if not PreferenceTool.aq_preference_generated:
+      updatePreferenceClassPropertySheetList()
+
+      portal = self.getPortalObject()
+      while portal.portal_type != 'ERP5 Site':
+        portal = portal.aq_parent.aq_inner.getPortalObject()
+      createPreferenceToolAccessorList(portal)
+
+      PreferenceTool.aq_preference_generated = True
+      if base_value is None:
+        return getattr(self, id)
+    return base_value
 
   security.declareProtected(Permissions.ModifyPortalContent, "setPreference")
   def setPreference(self, pref_name, value) :

Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=35108&r1=35107&r2=35108&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Base.py [utf8] Fri May  7 14:25:21 2010
@@ -293,7 +293,11 @@
   Base.aq_method_generated = {}
   Base.aq_portal_type = {}
   Base.aq_related_generated = 0
-  Base.aq_preference_generated = 0
+  try:
+    from Products.ERP5Form.PreferenceTool import PreferenceTool
+    PreferenceTool.aq_preference_generated = False
+  except ImportError:
+    LOG('ERP5Type', LOG, "ERP5Form.PreferenceTool not found")
 
   # Some method generations are based on portal methods, and portal methods cache results.
   # So it is safer to invalidate the cache.
@@ -760,9 +764,6 @@
   aq_portal_type = {}
   aq_related_generated = 0
 
-  aq_preference_generated = 0
-  # FIXME: Preference should not be included in ERP5Type
-
   # Declarative security - in ERP5 we use AccessContentsInformation to
   # define the right of accessing content properties as opposed
   # to view which is the right to view the object with a form
@@ -961,20 +962,6 @@
               generated_bid[bid] = 1
 
         Base.aq_related_generated = 1
-
-      # Generate preference methods (since side effect is to reset Preference accessors)
-      # XXX-JPS - This should be moved to PreferenceTool
-      if not Base.aq_preference_generated:
-        try :
-          from Products.ERP5Form.PreferenceTool import createPreferenceToolAccessorList
-          from Products.ERP5Form.PreferenceTool import updatePreferenceClassPropertySheetList
-          updatePreferenceClassPropertySheetList()
-          createPreferenceToolAccessorList(portal)
-        except ImportError, e :
-          LOG('Base._aq_dynamic', WARNING,
-              'unable to create methods for PreferenceTool', e)
-          raise
-        Base.aq_preference_generated = 1
 
       # Always try to return something after generation
       if generated:




More information about the Erp5-report mailing list