[Erp5-report] r37692 yo - /erp5/trunk/products/CMFCategory/CategoryTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Aug 11 12:03:37 CEST 2010
Author: yo
Date: Wed Aug 11 12:03:36 2010
New Revision: 37692
URL: http://svn.erp5.org?rev=37692&view=rev
Log:
Some trivial optimizations.
Modified:
erp5/trunk/products/CMFCategory/CategoryTool.py
Modified: erp5/trunk/products/CMFCategory/CategoryTool.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFCategory/CategoryTool.py?rev=37692&r1=37691&r2=37692&view=diff
==============================================================================
--- erp5/trunk/products/CMFCategory/CategoryTool.py [utf8] (original)
+++ erp5/trunk/products/CMFCategory/CategoryTool.py [utf8] Wed Aug 11 12:03:36 2010
@@ -930,8 +930,8 @@ class CategoryTool( UniqueObject, Folder
# XXX We must use filters in the future
# where_expression = self._buildQuery(spec, filter, kw)
portal_type = kw.get('portal_type', ())
- if spec is (): spec = portal_type # This is bad XXX - JPS - spec is for meta_type, not for portal_type - be consistent !
-
+ if spec is ():
+ spec = portal_type # This is bad XXX - JPS - spec is for meta_type, not for portal_type - be consistent !
if isinstance(spec, str):
spec = [spec]
@@ -944,28 +944,28 @@ class CategoryTool( UniqueObject, Folder
context_base_key = (tuple(context.getPhysicalPath()), base_category)
if context_base_key in acquired_object_dict:
acquired_object_dict = acquired_object_dict.copy()
- type_dict = acquired_object_dict[context_base_key].copy()
+ type_set = acquired_object_dict[context_base_key].copy()
if spec is ():
- if () in type_dict:
+ if () in type_set:
return []
else:
- type_dict[()] = 1
+ type_set.add(())
else:
for pt in spec:
- if pt in type_dict:
+ if pt in type_set:
return []
else:
- type_dict[pt] = 1
- acquired_object_dict[context_base_key] = type_dict
+ type_set.add(pt)
+ acquired_object_dict[context_base_key] = type_set
else:
- type_dict = {}
+ type_set = set()
if spec is ():
- type_dict[()] = 1
+ type_set.add(())
else:
for pt in spec:
- type_dict[pt] = 1
+ type_set.add(pt)
acquired_object_dict = acquired_object_dict.copy()
- acquired_object_dict[context_base_key] = type_dict
+ acquired_object_dict[context_base_key] = type_set
result = self.getSingleCategoryMembershipList( context, base_category, base=base,
spec=spec, filter=filter, **kw ) # Not acquired because this is the first try
@@ -975,9 +975,9 @@ class CategoryTool( UniqueObject, Folder
#LOG("result", 0, str(result))
if base_category_value is not None:
# If we do not mask or append, return now if not empty
- if base_category_value.getAcquisitionMaskValue() and \
- not base_category_value.getAcquisitionAppendValue() and \
- result:
+ if result \
+ and base_category_value.getAcquisitionMaskValue() \
+ and not base_category_value.getAcquisitionAppendValue():
# If acquisition masks and we do not append values, then we must return now
return self._filterCategoryListByPermission(base_category, base, result, checked_permission)
# First we look at local ids
@@ -1009,12 +1009,14 @@ class CategoryTool( UniqueObject, Folder
acquisition_base_category_list = base_category_value.getAcquisitionBaseCategoryList()
alt_base_category_list = base_category_value.getFallbackBaseCategoryList()
all_acquisition_base_category_list = acquisition_base_category_list + alt_base_category_list
- acquisition_pt = base_category_value.getAcquisitionPortalTypeList(None)
+ acquisition_pt = base_category_value.getAcquisitionPortalTypeList()
for my_base_category in acquisition_base_category_list:
# We implement here special keywords
if my_base_category == 'parent':
parent = context.aq_inner.aq_parent # aq_inner is required to make sure we use containment
- if getattr(aq_base(parent), 'portal_type', _marker) is _marker:
+ parent_portal_type = getattr(aq_base(parent), 'portal_type',
+ _marker)
+ if parent_portal_type is _marker:
my_acquisition_object_list = []
else:
#LOG("Parent Object List ",0,str(parent.getRelativeUrl()))
@@ -1022,7 +1024,8 @@ class CategoryTool( UniqueObject, Folder
#LOG("Parent Object List ",0,str(acquisition_pt))
#my_acquisition_object_path = parent.getPhysicalPath()
#if my_acquisition_object_path in acquired_object_dict:
- if acquisition_pt is None or parent.portal_type in acquisition_pt:
+ if len(acquisition_pt) == 0 \
+ or parent_portal_type in acquisition_pt:
my_acquisition_object_list = [parent]
else:
my_acquisition_object_list = []
@@ -1030,13 +1033,16 @@ class CategoryTool( UniqueObject, Folder
#LOG('getAcquiredCategoryMembershipList', 0, 'my_acquisition_object = %s, acquired_object_dict = %s' % (str(context), str(acquired_object_dict)))
my_acquisition_list = self.getSingleCategoryAcquiredMembershipList(context,
my_base_category,
- portal_type=tuple(base_category_value.getAcquisitionPortalTypeList(())),
+ portal_type=tuple(acquisition_pt),
acquired_object_dict=acquired_object_dict)
my_acquisition_object_list = []
- for c in my_acquisition_list:
- o = self.resolveCategory(c)
- if o is not None:
- my_acquisition_object_list.append(o)
+ if my_acquisition_list:
+ resolveCategory = self.resolveCategory
+ append = my_acquisition_object_list.append
+ for c in my_acquisition_list:
+ o = resolveCategory(c)
+ if o is not None:
+ append(o)
#my_acquisition_object_list = context.getValueList(my_base_category,
# portal_type=tuple(base_category_value.getAcquisitionPortalTypeList(())))
#LOG("Get Acquired PT",0,str(base_category_value.getAcquisitionPortalTypeList(())))
@@ -1068,13 +1074,14 @@ class CategoryTool( UniqueObject, Folder
else:
#LOG("No recursive call ",0,str((spec, my_acquisition_object.portal_type)))
new_result = []
- if getattr(base_category_value, 'acquisition_append_value', False):
+ if base_category_value.getAcquisitionAppendValue():
# If acquisition appends, then we must append to the result
result.extend(new_result)
elif len(new_result) > 0:
#LOG("new_result ",0,str(new_result))
- if (getattr(base_category_value, 'acquisition_copy_value', False) and len(original_result) == 0) \
- or getattr(base_category_value, 'acquisition_sync_value', False):
+ if (len(original_result) == 0 \
+ and base_category_value.getAcquisitionCopyValue()) \
+ or base_category_value.getAcquisitionSyncValue():
# If copy is set and result was empty, then copy it once
# If sync is set, then copy it again
self.setCategoryMembership( context, base_category, new_result,
@@ -1083,21 +1090,28 @@ class CategoryTool( UniqueObject, Folder
return self._filterCategoryListByPermission(base_category, base, new_result, checked_permission)
- if (getattr(base_category_value, 'acquisition_copy_value', False) or \
- getattr(base_category_value, 'acquisition_sync_value', False))\
- and len(result) > 0:
+ if len(result) > 0 \
+ and (base_category_value.getAcquisitionCopyValue() \
+ or base_category_value.getAcquisitionSyncValue()):
# If copy is set and result was empty, then copy it once
# If sync is set, then copy it again
self.setCategoryMembership( context, base_category, result,
- spec=spec, filter=filter, portal_type=portal_type, base=base )
- if len(result)==0 and len(base_category_value.getFallbackBaseCategoryList())>0:
+ spec=spec, filter=filter,
+ portal_type=portal_type, base=base )
+ fallback_base_category_list \
+ = base_category_value.getFallbackBaseCategoryList()
+ if len(result) == 0 and len(fallback_base_category_list) > 0:
# We must then try to use the alt base category
- for base_category in base_category_value.getFallbackBaseCategoryList():
+ getSingleCategoryAcquiredMembershipList \
+ = self.getSingleCategoryAcquiredMembershipList
+ resolveCategory = self.resolveCategory
+ append = result.append
+ for base_category in fallback_base_category_list:
# First get the category list
- category_list = self.getSingleCategoryAcquiredMembershipList( context, base_category, base=1,
+ category_list = getSingleCategoryAcquiredMembershipList( context, base_category, base=1,
spec=spec, filter=filter, acquired_object_dict=acquired_object_dict, **kw )
# Then convert it into value
- category_value_list = [self.resolveCategory(x) for x in category_list]
+ category_value_list = [resolveCategory(x) for x in category_list]
# Then build the alternate category
if base:
base_category_id = base_category_value.getId()
@@ -1108,7 +1122,7 @@ class CategoryTool( UniqueObject, Folder
LOG('CMFCategory', ERROR, message)
raise CategoryError (message)
else :
- result.append('%s/%s' % (base_category_id, category_value.getRelativeUrl()))
+ append('%s/%s' % (base_category_id, category_value.getRelativeUrl()))
else :
for category_value in category_value_list:
if category_value is None :
@@ -1117,7 +1131,7 @@ class CategoryTool( UniqueObject, Folder
LOG('CMFCategory', ERROR, message)
raise CategoryError (message)
else :
- result.append(category_value.getRelativeUrl())
+ append(category_value.getRelativeUrl())
# WE MUST IMPLEMENT HERE THE REST OF THE SEMANTICS
#LOG("Get Acquired Category Result ",0,str(result))
return self._filterCategoryListByPermission(base_category, base, result, checked_permission)
More information about the Erp5-report
mailing list