[Erp5-report] r43883 arnaud.fontaine - /erp5/trunk/products/ERP5Type/Core/CategoryProperty.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Mar 2 12:00:11 CET 2011


Author: arnaud.fontaine
Date: Wed Mar  2 12:00:11 2011
New Revision: 43883

URL: http://svn.erp5.org?rev=43883&view=rev
Log:
Apply API changes on StandardProperty for per-document accessors
generation

Modified:
    erp5/trunk/products/ERP5Type/Core/CategoryProperty.py

Modified: erp5/trunk/products/ERP5Type/Core/CategoryProperty.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Core/CategoryProperty.py?rev=43883&r1=43882&r2=43883&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Core/CategoryProperty.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Core/CategoryProperty.py [utf8] Wed Mar  2 12:00:11 2011
@@ -51,6 +51,7 @@ class CategoryProperty(IdAsReferenceMixi
   property_sheets = (PropertySheet.SimpleItem,
                      PropertySheet.Reference)
 
+  # TODO: REMOVE
   security.declareProtected(Permissions.AccessContentsInformation,
                             'exportToFilesystemDefinition')
   def exportToFilesystemDefinition(self):
@@ -143,20 +144,22 @@ class CategoryProperty(IdAsReferenceMixi
   }
 
   @classmethod
-  def applyPropertyOnAccessorHolder(cls,
-                                    accessor_holder,
-                                    category_id,
-                                    category_tool):
-    if category_tool is None:
-      return
-
-    cat_object = category_tool.get(category_id, None)
-    if cat_object is None:
-      LOG("ERP5Type.Core.CategoryProperty", WARNING,
-          "Base Category %r is missing. Accessors can not be generated." % \
-          category_id)
+  def applyDefinitionOnAccessorHolder(cls,
+                                      accessor_holder,
+                                      category_id,
+                                      portal):
+    try:
+      cat_object = portal.portal_categories._getOb(category_id)
+    except AttributeError:
+      if portal.hasObject('portal_categories'):
+        LOG("ERP5Type.Core.CategoryProperty", WARNING,
+            "Base Category %r is missing. Accessors can not be generated." % \
+              category_id)
 
       return
+    except TypeError:
+      # category_id is None
+      raise ValueError("Invalid category reference")
 
     # Create free text accessors.
     # XXX These are only for backward compatibility.
@@ -171,11 +174,16 @@ class CategoryProperty(IdAsReferenceMixi
                      'property_default': '',
                      'multivalued': False,
                      'storage_id': storage_id,
+                     'range': False,
+                     'translatable': False,
+                     'description': 'free text to specify %s' % category_id,
                      'read_permission': Permissions.AccessContentsInformation,
                      'write_permission': Permissions.ModifyPortalContent}
 
-    StandardProperty._applyOnAccessorHolder(property_dict, accessor_holder,
-                                            category_tool.getPortalObject())
+    StandardProperty.applyDefinitionOnAccessorHolder(property_dict,
+                                                     accessor_holder,
+                                                     portal,
+                                                     do_register=False)
 
     # Get read and write permission
     read_permission = Permissions.__dict__.get(cat_object.getReadPermission(),
@@ -226,8 +234,6 @@ class CategoryProperty(IdAsReferenceMixi
   security.declareProtected(Permissions.AccessContentsInformation,
                             'applyOnAccessorHolder')
   def applyOnAccessorHolder(self, accessor_holder, expression_context, portal):
-    reference = self.getReference()
-    if reference is not None:
-      self.applyPropertyOnAccessorHolder(accessor_holder,
-                                         reference,
-                                         getattr(portal, 'portal_categories', None))
+    self.applyDefinitionOnAccessorHolder(accessor_holder,
+                                         self.getReference(),
+                                         portal)



More information about the Erp5-report mailing list