[Erp5-report] r43169 kazuhiko - /erp5/trunk/products/ERP5/Tool/TemplateTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 8 13:23:32 CET 2011


Author: kazuhiko
Date: Tue Feb  8 13:23:32 2011
New Revision: 43169

URL: http://svn.erp5.org?rev=43169&view=rev
Log:
sort business templates recursively, without possibly adding additional business templates, that is already handled by TemplateTool_installRepositoryBusinessTemplateList.

Modified:
    erp5/trunk/products/ERP5/Tool/TemplateTool.py

Modified: erp5/trunk/products/ERP5/Tool/TemplateTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/TemplateTool.py?rev=43169&r1=43168&r2=43169&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/TemplateTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/TemplateTool.py [utf8] Tue Feb  8 13:23:32 2011
@@ -966,19 +966,33 @@ class TemplateTool (BaseTool):
                               'sortBusinessTemplateList')
     def sortBusinessTemplateList(self, bt_list):
       """
-       Sort a list of bt according to dependencies
+      Sort a list of business template in repositories according to
+      dependencies
+
+      bt_list : list of (repository, id) tuple.
       """
-      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
+      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' )



More information about the Erp5-report mailing list