[Erp5-report] r12070 - /erp5/trunk/products/CMFCategory/CategoryTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Jan 13 18:44:42 CET 2007


Author: jp
Date: Sat Jan 13 18:44:40 2007
New Revision: 12070

URL: http://svn.erp5.org?rev=12070&view=rev
Log:
Use of .aq_inner.aq_parent instead of .aq_parent whenever we want to get the container

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=12070&r1=12069&r2=12070&view=diff
==============================================================================
--- erp5/trunk/products/CMFCategory/CategoryTool.py (original)
+++ erp5/trunk/products/CMFCategory/CategoryTool.py Sat Jan 13 18:44:40 2007
@@ -288,7 +288,13 @@
     security.declareProtected(Permissions.AccessContentsInformation, 'getCategoryParentUidList')
     def getCategoryParentUidList(self, relative_url, base_category = None, strict=0):
       """
-        Returns the uids of all categories provided in categories
+        Returns the uids of all categories provided in categorie. This
+        method can support relative_url such as site/group/a/b/c which
+        base category is site yet use categories defined in group.
+
+        It is also able to use acquisition to create complex categories
+        such as site/group/a/b/c/b1/c1 where b and b1 are both children
+        categories of a.
 
         relative_url -- a single relative url of a list of
                         relative urls
@@ -313,7 +319,7 @@
                 # ie. when some documents act as categories
                 if not strict:
                   while o.meta_type == 'CMF Category':
-                    o = o.aq_parent
+                    o = o.aq_parent # We want acquisition here without aq_inner
                     uid_dict[(int(o.uid), bo_uid, 0)] = 1 # Non Strict Membership
         except (KeyError, AttributeError):
           LOG('WARNING: CategoriesTool',0, 'Unable to find uid for %s' % path)
@@ -723,9 +729,9 @@
       if spec is (): spec = portal_type
 
       # We must treat parent in a different way
-      #LOG('getSingleCategoryMembershipList', 0, 'base_category = %s, spec = %s, base = %s, context = %s, context.aq_parent = %s' % (repr(base_category), repr(spec), repr(base), repr(context), repr(context.aq_parent)))
+      #LOG('getSingleCategoryMembershipList', 0, 'base_category = %s, spec = %s, base = %s, context = %s, context.aq_inner.aq_parent = %s' % (repr(base_category), repr(spec), repr(base), repr(context), repr(context.aq_inner.aq_parent)))
       if base_category == 'parent':
-        parent = context.aq_parent # aq_inner ?
+        parent = context.aq_inner.aq_parent # aq_inner is required to make sure we use containment
         if parent.portal_type in spec:
           if base:
             return ['parent/' + parent.getRelativeUrl()]
@@ -871,7 +877,7 @@
                                                              # to get a local defined category
       
       base_category_value = self.getCategoryValue(base_category)
-      #LOG("result",0,str(result))
+      #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 \
@@ -903,16 +909,15 @@
             elif len(new_result) > 0:
               return new_result # Found enough information to return
         # Next we look at references
-        #LOG("Get Acquired BC",0,base_category_value.getAcquisitionBaseCategoryList())
+        #LOG("Get Acquired BC", 0, base_category_value.getAcquisitionBaseCategoryList())
         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(())
         for my_base_category in base_category_value.getAcquisitionBaseCategoryList():
-        #for my_base_category in all_acquisition_base_category_list:
           # We implement here special keywords
           if my_base_category == 'parent':
-            parent = context.aq_parent
+            parent = context.aq_inner.aq_parent # aq_inner is required to make sure we use containment
             if not hasattr(aq_base(parent), 'portal_type'):
               my_acquisition_object_list = []
             else:
@@ -925,8 +930,6 @@
                 my_acquisition_object_list = [parent]
               else:
                 my_acquisition_object_list = []
-              #else:
-              #  my_acquisition_object_list = []
           else:
             #LOG('getAcquiredCategoryMembershipList', 0, 'my_acquisition_object = %s, acquired_object_dict = %s' % (str(context), str(acquired_object_dict)))
             my_acquisition_list = self.getSingleCategoryAcquiredMembershipList(context,




More information about the Erp5-report mailing list