[Erp5-report] r6577 - in /erp5/trunk/products/ERP5Catalog: ./ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Apr 13 14:00:43 CEST 2006


Author: seb
Date: Thu Apr 13 14:00:25 2006
New Revision: 6577

URL: http://svn.erp5.org?rev=6577&view=rev
Log:
added support for dynamic default_XXX related key

Modified:
    erp5/trunk/products/ERP5Catalog/CatalogTool.py
    erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py

Modified: erp5/trunk/products/ERP5Catalog/CatalogTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/CatalogTool.py?rev=6577&r1=6576&r2=6577&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/CatalogTool.py (original)
+++ erp5/trunk/products/ERP5Catalog/CatalogTool.py Thu Apr 13 14:00:25 2006
@@ -529,39 +529,50 @@
     security.declarePrivate('getDynamicRelatedKeyList')
     def getDynamicRelatedKeyList(self, sql_catalog_id=None,**kw):
       """
-      Return the list of related keys.
+      Return the list of dynamic related keys.
       This method will try to automatically generate new related key
       by looking at the category tree.
+
+      For exemple it will generate:
+      destination_title | category,catalog/title/z_related_destination
+      default_destination_title | category,catalog/title/z_related_destination
       """
       if len(kw)>0:
         # import pdb;pdb.set_trace()
         pass
       related_key_list = []
       base_cat_id_list = self.portal_categories.getBaseCategoryList()
+      default_string = 'default_'
       for key in kw.keys():
+        prefix = ''
+        if key.startswith(default_string):
+          key = key[len(default_string):]
+          prefix = default_string
         splitted_key = key.split('_')
+        # look from the end of the key from the beginning if we
+        # can find 'title', or 'portal_type'...
         for i in range(1,len(splitted_key))[::-1]:
           expected_base_cat_id = '_'.join(splitted_key[0:i])
           if expected_base_cat_id!='parent' and \
              expected_base_cat_id in base_cat_id_list:
             # We have found a base_category
             end_key = '_'.join(splitted_key[i:])
-            if end_key in ('title','uid','description','id'):
-              related_key_list.append('%s | category,catalog/%s/z_related_%s' %
-                                          (key,end_key,expected_base_cat_id))
+            # accept only some catalog columns
+            if end_key in ('title','uid','description','id','portal_type'):
+              related_key_list.append('%s%s | category,catalog/%s/z_related_%s' %
+                                        (prefix,key,end_key,expected_base_cat_id))
 
       return related_key_list
 
     def _aq_dynamic(self, name):
       """
       Automatic related key generation.
-      Will generate z_related_destination if possible
+      Will generate z_related_[base_category_id] if possible
       """
       aq_base_name = getattr(aq_base(self), name, None)
       if aq_base_name == None:
         DYNAMIC_METHOD_NAME = 'z_related_'
         method_name_length = len(DYNAMIC_METHOD_NAME)
-
         zope_security = '__roles__'
         if (name.startswith(DYNAMIC_METHOD_NAME) and \
           (not name.endswith(zope_security))):

Modified: erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py?rev=6577&r1=6576&r2=6577&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py (original)
+++ erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py Thu Apr 13 14:00:25 2006
@@ -700,5 +700,13 @@
     organisation_list = [x.getObject() for x in 
                          module.searchFolder(group_description='a')]
     self.assertEquals(organisation_list,[organisation])
-
-
+    # Try to get the organisation with the group description 'c'
+    organisation_list = [x.getObject() for x in 
+                         module.searchFolder(group_description='c')]
+    self.assertEquals(organisation_list,[])
+    # Try to get the organisation with the default group description 'c'
+    organisation_list = [x.getObject() for x in 
+                         module.searchFolder(default_group_description='c')]
+    self.assertEquals(organisation_list,[])
+
+




More information about the Erp5-report mailing list