diff options
| author | xmo-odoo <xmo@odoo.com> | 2017-05-10 09:39:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-10 09:39:55 +0200 |
| commit | fffaf735f58f1ac57781c095eb552de6d1fcdc47 (patch) | |
| tree | 88ab0ab65430d871862a836524e0ecc890d1674d /odoo/modules/migration.py | |
| parent | 10eee18a047d35305dc46282e610e88936d81ffc (diff) | |
[FIX] P3: list -> iterable builtins (#16811)
In Python 3:
* various builtins and dict methods were changed to return
view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
removed altogether
This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).
Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.
issue #8530
Diffstat (limited to 'odoo/modules/migration.py')
| -rw-r--r-- | odoo/modules/migration.py | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/odoo/modules/migration.py b/odoo/modules/migration.py index 5b1dcf09ab2..0fa6699cf24 100644 --- a/odoo/modules/migration.py +++ b/odoo/modules/migration.py @@ -13,6 +13,7 @@ from os.path import join as opj from odoo.modules.module import get_resource_path import odoo.release as release import odoo.tools as tools +from odoo.tools import pycompat from odoo.tools.parse_version import parse_version @@ -87,13 +88,12 @@ class MigrationManager(object): return "%s.%s" % (release.major_version, version) def _get_migration_versions(pkg): - versions = list(set( + versions = sorted({ ver - for lv in self.migrations[pkg.name].values() - for ver, lf in lv.items() + for lv in pycompat.values(self.migrations[pkg.name]) + for ver, lf in pycompat.items(lv) if lf - )) - versions.sort(key=lambda k: parse_version(convert_version(k))) + }, key=lambda k: parse_version(convert_version(k))) return versions def _get_migration_files(pkg, version, stage): @@ -107,7 +107,7 @@ class MigrationManager(object): 'maintenance': opj('base', 'maintenance', 'migrations', pkg.name), } - for x in mapping.keys(): + for x in mapping: if version in m.get(x): for f in m[x][version]: if not f.startswith(stage + '-'): |
