[Erp5-report] r42864 nicolas.dumazet - /erp5/trunk/products/ERP5Type/Utils.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Feb 1 05:24:26 CET 2011
Author: nicolas.dumazet
Date: Tue Feb 1 05:24:26 2011
New Revision: 42864
URL: http://svn.erp5.org?rev=42864&view=rev
Log:
implement createRelatedAccessors.
Just a smaller function that exposes generation of related category accessors.
For now it's used in both Utils and dynamic/, but soon enough the Utils caller
will be gone and we will be able to simplify all this.
Modified:
erp5/trunk/products/ERP5Type/Utils.py
Modified: erp5/trunk/products/ERP5Type/Utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Utils.py?rev=42864&r1=42863&r2=42864&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Utils.py [utf8] Tue Feb 1 05:24:26 2011
@@ -1319,6 +1319,96 @@ def getExistingBaseCategoryList(portal,
new_base_cat_list.append(base_cat)
return tuple(new_base_cat_list)
+def createRelatedAccessors(portal_categories, property_holder, econtext,
+ base_category_list=None):
+ if base_category_list is None:
+ base_category_list = []
+ # first extend the Tales category definitions into base_category_list
+ for cat in base_category_dict:
+ if isinstance(cat, Expression):
+ result = cat(econtext)
+ if isinstance(result, (list, tuple)):
+ base_category_list.extend(result)
+ else:
+ base_category_list.append(result)
+ else:
+ base_category_list.append(cat)
+
+ for cat in base_category_list:
+ # Get read and write permission
+ cat_object = portal_categories.get(cat, None)
+ if cat_object is not None:
+ read_permission = Permissions.__dict__.get(
+ cat_object.getReadPermission(),
+ Permissions.AccessContentsInformation)
+ if isinstance(read_permission, Expression):
+ read_permission = read_permission(econtext)
+ write_permission = Permissions.__dict__.get(
+ cat_object.getWritePermission(),
+ Permissions.ModifyPortalContent)
+ if isinstance(write_permission, Expression):
+ write_permission = write_permission(econtext)
+ else:
+ read_permission = Permissions.AccessContentsInformation
+ write_permission = Permissions.ModifyPortalContent
+ # Actually create accessors
+ createRelatedValueAccessors(property_holder, cat, read_permission=read_permission)
+ # Unnecessary to create these accessors more than once.
+ base_category_dict.clear()
+
+
+def createAllCategoryAccessors(portal, property_holder, cat_list, econtext):
+ if portal is not None:
+ portal_categories = getattr(portal, 'portal_categories', None)
+ else:
+ portal_categories = None
+ for cat in cat_list:
+ # Create free text accessors.
+ prop = {
+ 'id' : '%s_free_text' % cat,
+ 'description': 'free text to specify %s' % cat,
+ 'type' : 'text',
+ 'default' : '',
+ 'mode' : 'w'
+ }
+ # XXX These are only for backward compatibility.
+ if cat == 'group':
+ prop['storage_id'] = 'group'
+ elif cat == 'site':
+ prop['storage_id'] = 'location'
+ createDefaultAccessors(
+ property_holder,
+ prop['id'],
+ prop=prop,
+ read_permission=Permissions.AccessContentsInformation,
+ write_permission=Permissions.ModifyPortalContent,
+ portal=portal)
+
+ # Get read and write permission
+ if portal_categories is not None:
+ cat_object = portal_categories.get(cat, None)
+ else:
+ cat_object = None
+ if cat_object is not None:
+ read_permission = Permissions.__dict__.get(
+ cat_object.getReadPermission(),
+ Permissions.AccessContentsInformation)
+ if isinstance(read_permission, Expression):
+ read_permission = read_permission(econtext)
+ write_permission = Permissions.__dict__.get(
+ cat_object.getWritePermission(),
+ Permissions.ModifyPortalContent)
+ if isinstance(write_permission, Expression):
+ write_permission = write_permission(econtext)
+ else:
+ read_permission = Permissions.AccessContentsInformation
+ write_permission = Permissions.ModifyPortalContent
+ # Actualy create accessors
+ createCategoryAccessors(property_holder, cat,
+ read_permission=read_permission, write_permission=write_permission)
+ createValueAccessors(property_holder, cat,
+ read_permission=read_permission, write_permission=write_permission)
+
default_translation_property_dict = {
'id' : 'translation_domain',
'description' : '',
@@ -1486,93 +1576,14 @@ def setDefaultProperties(property_holder
write_permission=write_permission,
portal=portal)
# Create Category Accessors
- for cat in cat_list:
- # Create free text accessors.
- prop = {
- 'id' : '%s_free_text' % cat,
- 'description': 'free text to specify %s' % cat,
- 'type' : 'text',
- 'default' : '',
- 'mode' : 'w'
- }
- # XXX These are only for backward compatibility.
- if cat == 'group':
- prop['storage_id'] = 'group'
- elif cat == 'site':
- prop['storage_id'] = 'location'
- createDefaultAccessors(
- property_holder,
- prop['id'],
- prop=prop,
- read_permission=Permissions.AccessContentsInformation,
- write_permission=Permissions.ModifyPortalContent,
- portal=portal)
-
- # Get read and write permission
- if portal is not None:
- cat_object = portal.portal_categories.get(cat, None)
- else:
- cat_object = None
- if cat_object is not None:
- read_permission = Permissions.__dict__.get(
- cat_object.getReadPermission(),
- Permissions.AccessContentsInformation)
- if isinstance(read_permission, Expression):
- read_permission = read_permission(econtext)
- write_permission = Permissions.__dict__.get(
- cat_object.getWritePermission(),
- Permissions.ModifyPortalContent)
- if isinstance(write_permission, Expression):
- write_permission = write_permission(econtext)
- else:
- read_permission = Permissions.AccessContentsInformation
- write_permission = Permissions.ModifyPortalContent
- # Actualy create accessors
- createCategoryAccessors(property_holder, cat,
- read_permission=read_permission, write_permission=write_permission)
- createValueAccessors(property_holder, cat,
- read_permission=read_permission, write_permission=write_permission)
+ createAllCategoryAccessors(portal, property_holder, cat_list, econtext)
if object is not None and property_holder.__name__ == "Base":
# XXX use if possible is and real class
- base_category_list = []
- # first extend the Tales category definitions into base_category_list
- for cat in base_category_dict:
- if isinstance(cat, Expression):
- result = cat(econtext)
- if isinstance(result, (list, tuple)):
- base_category_list.extend(result)
- else:
- base_category_list.append(result)
- else:
- base_category_list.append(cat)
-
if portal is not None:
portal_categories = getattr(portal, 'portal_categories', None)
else:
portal_categories = None
- for cat in base_category_list:
- # Get read and write permission
- cat_object = None
- if portal_categories is not None:
- cat_object = portal_categories.get(cat, None)
- if cat_object is not None:
- read_permission = Permissions.__dict__.get(
- cat_object.getReadPermission(),
- Permissions.AccessContentsInformation)
- if isinstance(read_permission, Expression):
- read_permission = read_permission(econtext)
- write_permission = Permissions.__dict__.get(
- cat_object.getWritePermission(),
- Permissions.ModifyPortalContent)
- if isinstance(write_permission, Expression):
- write_permission = write_permission(econtext)
- else:
- read_permission = Permissions.AccessContentsInformation
- write_permission = Permissions.ModifyPortalContent
- # Actually create accessors
- createRelatedValueAccessors(property_holder, cat, read_permission=read_permission)
- # Unnecessary to create these accessors more than once.
- base_category_dict.clear()
+ createRelatedAccessors(portal_categories, property_holder, econtext)
property_holder.constraints = []
for constraint in constraint_list:
@@ -3384,6 +3395,3 @@ def reencodeUrlEscapes(url):
url += [_reencodeUrlEscapes_map[c] for c in part]
except StopIteration:
return ''.join(url)
-
-def createRelatedAccessors():
- pass
More information about the Erp5-report
mailing list