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

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Apr 21 13:48:26 CEST 2009


Author: vincent
Date: Tue Apr 21 13:48:23 2009
New Revision: 26550

URL: http://svn.erp5.org?rev=26550&view=rev
Log:
It is obviously invalid to pass args and kw to *both* underlying preference accessor and searchFolder (via _getSortedPreferenceList). Fix that by passing them through to underlying preference accessor, since those args & kw come from an accessor-like method, so their API is consistent.
To preserve backward compatibility, accept passing through sql_catalog_id, but add an XXX comment about that and what uses it.

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=26550&r1=26549&r2=26550&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PreferenceTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/PreferenceTool.py [utf8] Tue Apr 21 13:48:23 2009
@@ -126,7 +126,11 @@
   def __call__(self, instance, *args, **kw):
     def _getPreference(*args, **kw):
       value = None
-      for pref in instance._getSortedPreferenceList(*args, **kw):
+      # XXX: sql_catalog_id is passed when calling getPreferredArchive
+      # This is inconsistent with regular accessor API, and indicates that
+      # there is a design problem in current archive API.
+      sql_catalog_id = kw.pop('sql_catalog_id', None)
+      for pref in instance._getSortedPreferenceList(sql_catalog_id=sql_catalog_id):
         value = getattr(pref, self._preference_name, _marker)
         # XXX-JPS Why don't we use accessors here such as:
         # value = pref.getProperty(self._preference_name, _marker)
@@ -207,7 +211,7 @@
     """ set the preference on the active Preference object"""
     self.getActivePreference()._edit(**{pref_name:value})
 
-  def _getSortedPreferenceList(self, *args, **kw) :
+  def _getSortedPreferenceList(self, sql_catalog_id=None):
     """ return the most appropriate preferences objects,
         sorted so that the first in the list should be applied first
     """
@@ -217,7 +221,7 @@
     #                  or better solution
     user = getToolByName(self, 'portal_membership').getAuthenticatedMember()
     user_is_manager = 'Manager' in user.getRolesInContext(self)
-    for pref in self.searchFolder(portal_type='Preference', **kw) :
+    for pref in self.searchFolder(portal_type='Preference', sql_catalog_id=sql_catalog_id):
       pref = pref.getObject()
       if pref is not None and pref.getProperty('preference_state',
                                 'broken') in ('enabled', 'global'):
@@ -230,7 +234,7 @@
           prefs.append(pref)
     prefs.sort(key=lambda x: x.getPriority(), reverse=True)
     # add system preferences after user preferences
-    sys_prefs = [x.getObject() for x in self.searchFolder(portal_type='System Preference', **kw) \
+    sys_prefs = [x.getObject() for x in self.searchFolder(portal_type='System Preference', sql_catalog_id=sql_catalog_id) \
                  if x.getObject().getProperty('preference_state', 'broken') in ('enabled', 'global')]
     sys_prefs.sort(key=lambda x: x.getPriority(), reverse=True)
     return sys_prefs + prefs




More information about the Erp5-report mailing list