diff --git a/product/CMFCategory/Renderer.py b/product/CMFCategory/Renderer.py index 851d89dbd78f1e413ec15d120793d7b1ce65cefe..1bf488bbb71b58ae3832557b015702d3da99cb89 100644 --- a/product/CMFCategory/Renderer.py +++ b/product/CMFCategory/Renderer.py @@ -194,8 +194,7 @@ class Renderer(Filter): url = value.getRelativeUrl() if self.base: if self.base_category: - # Prepend the specified base category to the url. - url = self.base_category + '/' + url + url = '%s/%s' % (self.base_category, url) else: # If the base category of this category does not match the guessed # base category, merely ignore this category. @@ -206,6 +205,10 @@ class Renderer(Filter): # Remove from now, it might be outdated and useless #if value.getBaseCategoryId() != guessed_base_category: # continue + + # Prepend the specified base category to the url. + if isinstance(self.base, str): + url = '%s/%s' % (self.base, url) else: if self.base_category: # Nothing to do. diff --git a/product/CMFCategory/tests/testCMFCategory.py b/product/CMFCategory/tests/testCMFCategory.py index 52d091eec4bac110367b4a7c37b7b7facf95c42e..15c1c71beea82fd5802c5a5da1600566e5d5771c 100644 --- a/product/CMFCategory/tests/testCMFCategory.py +++ b/product/CMFCategory/tests/testCMFCategory.py @@ -884,6 +884,21 @@ class TestCMFCategory(ERP5TypeTestCase): self.assertEquals(list(c1.getCategoryChildValueList( local_sort_id='int_index')), [c12, c11, c111]) + + def test_25_getCategoryChildItemList_base_parameter(self): + pc = self.getCategoriesTool() + bc = pc.newContent(portal_type='Base Category', id='foo') + c1 = bc.newContent(portal_type='Category', id='1', title='C') + + self.assertEquals([['', ''], ['C', '1']], + bc.getCategoryChildTitleItemList()) + self.assertEquals([['', ''], ['C', '1']], + bc.getCategoryChildTitleItemList(base=0)) + self.assertEquals([['', ''], ['C', 'foo/1']], + bc.getCategoryChildTitleItemList(base=1)) + self.assertEquals([['', ''], ['C', 'bar/foo/1']], + bc.getCategoryChildTitleItemList(base='bar')) + if __name__ == '__main__': framework()