Stefan Rijnhart (Therp) has proposed merging 
lp:~therp-nl/openupgrade-server/6.1-include_recursive_deps into 
lp:openupgrade-server/6.1.

Requested reviews:
  OpenUpgrade Committers (openupgrade-committers)

For more details, see:
https://code.launchpad.net/~therp-nl/openupgrade-server/6.1-include_recursive_deps/+merge/217753

OpenUpgrade injects new module dependencies during the upgrade process, to 
prevent the 'Unmet module dependency' error. I was lazy when adding this method 
and did not iterate recursively to include the dependencies of the new 
dependencies. This change fixes that.

6.0 version here: 
https://code.launchpad.net/~therp-nl/openupgrade-server/6.0-include_recursive_deps
-- 
https://code.launchpad.net/~therp-nl/openupgrade-server/6.1-include_recursive_deps/+merge/217753
Your team OpenUpgrade Committers is requested to review the proposed merge of 
lp:~therp-nl/openupgrade-server/6.1-include_recursive_deps into 
lp:openupgrade-server/6.1.
=== modified file 'openerp/openupgrade/openupgrade.py'
--- openerp/openupgrade/openupgrade.py	2012-10-17 12:52:44 +0000
+++ openerp/openupgrade/openupgrade.py	2014-04-30 12:14:31 +0000
@@ -336,19 +336,21 @@
     time. Used in the modified OpenUpgrade Server,
     not to be used in migration scripts
     """
-    if not module_list:
-        return module_list
-    cr.execute("""
-        SELECT ir_module_module_dependency.name
-        FROM
-            ir_module_module,
-            ir_module_module_dependency
-        WHERE
-            module_id = ir_module_module.id
-            AND ir_module_module.name in %s
-        """, (tuple(module_list),))
-    dependencies = [x[0] for x in cr.fetchall()]
-    return list(set(module_list + dependencies))
+    dependencies = module_list
+    while dependencies:
+        cr.execute("""
+            SELECT DISTINCT dep.name
+            FROM
+                ir_module_module,
+                ir_module_module_dependency dep
+            WHERE
+                module_id = ir_module_module.id
+                AND ir_module_module.name in %s
+                AND dep.name not in %s
+            """, (tuple(dependencies), tuple(module_list),))
+        dependencies = [x[0] for x in cr.fetchall()]
+        module_list += dependencies
+    return module_list
 
 def migrate():
     """

-- 
Mailing list: https://launchpad.net/~credativ
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~credativ
More help   : https://help.launchpad.net/ListHelp

Reply via email to