[Erp5-report] r11801 - /erp5/trunk/products/ERP5Form/PreferenceTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Sat Dec 30 16:19:35 CET 2006
Author: jp
Date: Sat Dec 30 16:19:30 2006
New Revision: 11801
URL: http://svn.erp5.org?rev=11801&view=rev
Log:
Implemented dynamic selection of preference property sheets. It is no longe necessary to put all propertysheet definitions in ERP5/PropertySheet
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=11801&r1=11800&r2=11801&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PreferenceTool.py (original)
+++ erp5/trunk/products/ERP5Form/PreferenceTool.py Sat Dec 30 16:19:30 2006
@@ -33,8 +33,9 @@
from Products.CMFCore.utils import getToolByName
from Products.ERP5Type.Tool.BaseTool import BaseTool
-from Products.ERP5Type import Permissions
+from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5Type.Cache import CachingMethod
+from Products.ERP5Type.Base import Base
from Products.ERP5Type.Utils import convertToUpperCase
from Products.ERP5Type.Accessor.TypeDefinition import list_types
from Products.ERP5Form.Document.Preference import Preference
@@ -45,8 +46,13 @@
class func_code: pass
def createPreferenceMethods(portal) :
- """Initialize all Preference methods on the preference tool.
- This method must be called on startup.
+ """
+ Initialize all Preference methods on the preference tool.
+ This method must be called on startup.
+
+ This tool is capable of updating the list of Preference
+ property sheets by looking at all registered property sheets
+ and considering those which name ends with 'Preference'
"""
attr_list = []
typestool = getToolByName(portal, 'portal_types')
@@ -65,9 +71,19 @@
'unable to import Property Sheet %s' % property_sheet, e)
# 'Static' property sheets defined on the class
class_property_sheet_list = Preference.property_sheets
+ # Time to lookup for preferences defined on other modules
+ property_sheets = list(class_property_sheet_list)
+ for id in dir(PropertySheet):
+ if id.endswith('Preference'):
+ ps = getattr(PropertySheet, id)
+ if ps not in property_sheets:
+ property_sheets.append(ps)
+ class_property_sheet_list = tuple(property_sheets)
+ Preference.property_sheets = class_property_sheet_list
+ # We can now merge
for property_sheet in ( tuple(zmi_property_sheet_list) +
class_property_sheet_list ) :
- # then generate common method names
+ # then generate common method names
for prop in property_sheet._properties :
if not prop.get('preference', 0) :
# only properties marked as preference are used
@@ -79,7 +95,7 @@
for attribute_name in attr_list:
method = PreferenceMethod(attribute_name)
setattr(PreferenceTool, attribute_name, method)
-
+
class PreferenceMethod(Method) :
""" A method object that lookup the attribute on preferences. """
# This is required to call the method form the Web
More information about the Erp5-report
mailing list