From 9a52f787d5b9b61588f9ac67e50daaf89ec64259 Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Thu, 24 Mar 2005 16:15:11 +0000 Subject: [PATCH] Bug fix: do not display all categories in getVariationRangeCategoryList when a variation is already defined on a resource. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@2744 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/Resource.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/product/ERP5/Document/Resource.py b/product/ERP5/Document/Resource.py index 324f2d4a5a..94cd7beeba 100755 --- a/product/ERP5/Document/Resource.py +++ b/product/ERP5/Document/Resource.py @@ -80,22 +80,16 @@ class Resource(XMLMatrix, CoreResource, Variated): """ Returns possible variations """ + result = [] if base_category_list is (): base_category_list = self.getVariationBaseCategoryList() elif type(base_category_list) is type('a'): base_category_list = (base_category_list,) - result = [] - for c in base_category_list: - c_range = self.getCategoryMembershipList(c, base=base) - if len(c_range) > 0: - result += list(map(lambda x: (x,x), c_range)) - else: - if root: - # XXX - no idea why we should keep this ? JPS - result += self.portal_categories.unrestrictedTraverse(c).getBaseItemList(base=base) + other_base_category_dict = dict([(i,1) for i in base_category_list]) try: - other_variations = self.searchFolder(portal_type = self.getPortalVariationTypeList()) + other_variations = self.searchFolder( \ + portal_type=self.getPortalVariationTypeList()) except: other_variations = [] if len(other_variations) > 0: @@ -103,19 +97,30 @@ class Resource(XMLMatrix, CoreResource, Variated): o = o_brain.getObject() for v in o.getVariationBaseCategoryList(): if base_category_list is () or v in base_category_list: - + other_base_category_dict[v] = 0 display_value = getattr(o, display_id) if callable( display_value ): display_value = display_value() - if base: # [ ( display, stored value ) ] result += [('%s/%s' % (v, display_value ), '%s/%s' % (v, o.getRelativeUrl()))] else: result += [('%s' % display_value , '%s' % o.getRelativeUrl())] - return result + other_base_category_item_list = filter(lambda x: x[1]==1, + other_base_category_dict.items()) + other_base_category_list = map(lambda x: x[0], + other_base_category_item_list) + for c in other_base_category_list: + c_range = self.getCategoryMembershipList(c, base=base) + if len(c_range) > 0: + result += list(map(lambda x: (x,x), c_range)) + else: + if root: + # XXX - no idea why we should keep this ? JPS + result += self.portal_categories.unrestrictedTraverse(c).getBaseItemList(base=base) + return result security.declareProtected(Permissions.AccessContentsInformation, -- 2.30.9