From 5ed6a0fe37335701a5a59e00c6f39efa8cd3c957 Mon Sep 17 00:00:00 2001 From: Kazuhiko Shiozaki <kazuhiko@nexedi.com> Date: Tue, 8 Feb 2011 12:23:32 +0000 Subject: [PATCH] sort business templates recursively, without possibly adding additional business templates, that is already handled by TemplateTool_installRepositoryBusinessTemplateList. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@43169 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Tool/TemplateTool.py | 40 +++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py index 4f6dc5d609..333d926877 100644 --- a/product/ERP5/Tool/TemplateTool.py +++ b/product/ERP5/Tool/TemplateTool.py @@ -966,19 +966,33 @@ class TemplateTool (BaseTool): 'sortBusinessTemplateList') def sortBusinessTemplateList(self, bt_list): """ - Sort a list of bt according to dependencies - """ - result_list = [] - for repository, id in bt_list: - dependency_list = self.getDependencyList((repository, id)) - dependency_list.append((repository, id)) - for dependency in dependency_list: - if dependency[0] == 'meta': - provider_list = self.getProviderList(dependency[1]) - dependency = self.findProviderInBTList(provider_list, bt_list) - if dependency not in result_list: - result_list.append(dependency) - return result_list + Sort a list of business template in repositories according to + dependencies + + bt_list : list of (repository, id) tuple. + """ + def isDepend(a, b): + # return True if a depends on b. + dependency_list = [x.split(' ')[0] for x in a['dependency_list']] + provision_list = list(b['provision_list']) + [b['title']] + for i in provision_list: + if i in dependency_list: + return True + return False + + sorted_bt_list = [] + for repository, bt_id in bt_list: + bt = [x for x in self.repository_dict[repository] \ + if x['id'] == bt_id][0] + for j in range(len(sorted_bt_list)): + if isDepend(sorted_bt_list[j][1], bt): + sorted_bt_list.insert(j, (repository, bt)) + break + else: + sorted_bt_list.append((repository, bt)) + sorted_bt_list = [(repository, bt['id']) for repository, bt \ + in sorted_bt_list] + return sorted_bt_list security.declareProtected( Permissions.AccessContentsInformation, 'getRepositoryBusinessTemplateList' ) -- 2.30.9