[Erp5-report] r43884 arnaud.fontaine - /erp5/trunk/products/ERP5Type/Core/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 2 12:01:50 CET 2011
Author: arnaud.fontaine
Date: Wed Mar 2 12:01:50 2011
New Revision: 43884
URL: http://svn.erp5.org?rev=43884&view=rev
Log:
For per-document accessors generation, rely on evaluateExpressionFromString
and skip invalid category after displaying a message in the logs
Modified:
erp5/trunk/products/ERP5Type/Core/DynamicCategoryProperty.py
Modified: erp5/trunk/products/ERP5Type/Core/DynamicCategoryProperty.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Core/DynamicCategoryProperty.py?rev=43884&r1=43883&r2=43884&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Core/DynamicCategoryProperty.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Core/DynamicCategoryProperty.py [utf8] Wed Mar 2 12:01:50 2011
@@ -28,9 +28,11 @@
from AccessControl import ClassSecurityInfo
from Products.CMFCore.Expression import Expression
-
+from zLOG import LOG, INFO
+from Products.ERP5Type.Utils import evaluateExpressionFromString
from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5Type.Core.CategoryProperty import CategoryProperty
+from Products.ERP5Type.Core.StandardProperty import StandardProperty
class DynamicCategoryProperty(CategoryProperty):
"""
@@ -48,6 +50,7 @@ class DynamicCategoryProperty(CategoryPr
property_sheets = (PropertySheet.SimpleItem,
PropertySheet.DynamicCategoryProperty)
+ # TODO: REMOVE
security.declareProtected(Permissions.AccessContentsInformation,
'exportToFilesystemDefinition')
def exportToFilesystemDefinition(self):
@@ -73,15 +76,19 @@ class DynamicCategoryProperty(CategoryPr
security.declareProtected(Permissions.AccessContentsInformation,
'applyOnAccessorHolder')
def applyOnAccessorHolder(self, accessor_holder, expression_context, portal):
- expression_string = self.getCategoryExpression()
- if expression_string is not None:
- expression = Expression(expression_string)
- value = expression(expression_context)
-
- category_tool = getattr(portal, 'portal_categories', None)
- if not isinstance(value, (tuple, list)):
- value = [value]
- for category_id in value:
- self.applyPropertyOnAccessorHolder(accessor_holder,
- category_id,
- category_tool)
+ category_id_list = evaluateExpressionFromString(expression_context,
+ self.getCategoryExpression())
+
+ if not isinstance(category_id_list, (tuple, list)):
+ category_id_list = [category_id_list]
+
+ for category_id in category_id_list:
+ try:
+ self.applyDefinitionOnAccessorHolder(accessor_holder,
+ category_id,
+ portal)
+ except ValueError, e:
+ # If one of the category defined is invalid, don't give up as
+ # the other ones may be fine
+ LOG("ERP5Type.Core.DynamicCategoryProperty", INFO,
+ "Invalid category: %s" % str(e))
More information about the Erp5-report
mailing list