[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