[Erp5-report] r42833 nicolas.dumazet - /erp5/trunk/products/ERP5Type/dynamic/
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Jan 31 16:22:04 CET 2011
Author: nicolas.dumazet
Date: Mon Jan 31 16:22:04 2011
New Revision: 42833
URL: http://svn.erp5.org?rev=42833&view=rev
Log:
add optional initialize parameter; and do not skip non-fake accessors
Modified:
erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py
Modified: erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py?rev=42833&r1=42832&r2=42833&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/dynamic/accessor_holder.py [utf8] Mon Jan 31 16:22:04 2011
@@ -47,25 +47,28 @@ class AccessorHolderType(type):
def fromPropertyHolder(meta_type,
property_holder,
portal=None,
- accessor_holder_module_name=None):
+ accessor_holder_module_name=None,
+ initialize=True):
"""
Create a new accessor holder class from the given Property Holder
within the given accessor holder module
"""
property_sheet_id = property_holder.__name__
- setDefaultClassProperties(property_holder)
+ context = portal.portal_property_sheets
+ if initialize:
+ setDefaultClassProperties(property_holder)
+
+ try:
+ setDefaultProperties(property_holder,
+ object=context,
+ portal=portal)
+ except:
+ LOG("Tool.PropertySheetTool", ERROR,
+ "Could not generate accessor holder class for %s (module=%s)" % \
+ (property_sheet_id, accessor_holder_module_name),
+ error=sys.exc_info())
- try:
- setDefaultProperties(property_holder,
- object=portal,
- portal=portal)
- except:
- LOG("Tool.PropertySheetTool", ERROR,
- "Could not generate accessor holder class for %s (module=%s)" % \
- (property_sheet_id, accessor_holder_module_name),
- error=sys.exc_info())
-
- raise
+ raise
# Create the new accessor holder class and set its module properly
accessor_holder_class = meta_type(property_sheet_id, (object,), dict(
@@ -86,6 +89,10 @@ class AccessorHolderType(type):
# Holder to the new accessor holder class (code coming from
# createAccessor in Base.PropertyHolder)
for id, fake_accessor in property_holder._getPropertyHolderItemList():
+ if callable(fake_accessor):
+ # not so fake ;)
+ setattr(accessor_holder_class, id, fake_accessor)
+ continue
if not isinstance(fake_accessor, tuple):
continue
@@ -131,7 +138,7 @@ def _generateBaseAccessorHolder(portal,
property_holder = PropertyHolder(base_accessor_holder_id)
- econtext = createExpressionContext(portal, portal)
+ econtext = createExpressionContext(portal_categories, portal)
createRelatedAccessors(portal_categories,
property_holder,
econtext,
@@ -141,7 +148,7 @@ def _generateBaseAccessorHolder(portal,
property_holder,
portal,
'erp5.accessor_holder',
- skip_default=True)
+ initialize=False)
setattr(accessor_holder_module, base_accessor_holder_id, accessor_holder)
generating_base_accessors = False
return accessor_holder
@@ -177,7 +184,7 @@ def _generatePreferenceToolAccessorHolde
property_holder,
portal,
'erp5.accessor_holder',
- skip_default=True)
+ initialize=False)
setattr(accessor_holder_module, 'PreferenceTool', accessor_holder)
return accessor_holder
More information about the Erp5-report
mailing list