From 1b1b1b827725db205313a2028dc42c948fa54ce5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Mon, 31 Jul 2006 11:27:51 +0000 Subject: [PATCH] added support for *_relative_url dynamic related keys git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@8926 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Catalog/CatalogTool.py | 14 +++++++++----- product/ERP5Catalog/tests/testERP5Catalog.py | 5 +++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/product/ERP5Catalog/CatalogTool.py b/product/ERP5Catalog/CatalogTool.py index 6946c12505..c84874c1b1 100644 --- a/product/ERP5Catalog/CatalogTool.py +++ b/product/ERP5Catalog/CatalogTool.py @@ -123,11 +123,13 @@ class IndexableObjectWrapper(CMFCoreIndexableObjectWrapper): return list(allowed.keys()) class RelatedBaseCategory(Method): - + """A Dynamic Method to act as a related key. + """ def __init__(self, id): self._id = id def __call__(self, instance, table_0, table_1, query_table='catalog',**kw): + """Create the sql code for this related key.""" base_category_uid = instance.portal_categories._getOb(self._id).getUid() expression_list = [] append = expression_list.append @@ -551,14 +553,16 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject): # 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 \ + 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:]) # 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)) + if end_key in ('title', 'uid', 'description', + 'relative_url', '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 diff --git a/product/ERP5Catalog/tests/testERP5Catalog.py b/product/ERP5Catalog/tests/testERP5Catalog.py index 3f2aecb4f7..93896f96f5 100644 --- a/product/ERP5Catalog/tests/testERP5Catalog.py +++ b/product/ERP5Catalog/tests/testERP5Catalog.py @@ -713,5 +713,10 @@ class TestERP5Catalog(ERP5TypeTestCase): organisation_list = [x.getObject() for x in module.searchFolder(default_group_description='c')] self.assertEquals(organisation_list,[]) + # Try to get the organisation with group relative_url + group_relative_url = group_nexedi_category.getRelativeUrl() + organisation_list = [x.getObject() for x in + module.searchFolder(group_relative_url=group_relative_url)] + self.assertEquals(organisation_list, [organisation]) -- 2.30.9