From dfc9fe6a547aabb3f2c39b448e79bd776d8ec319 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 17 May 2019 09:14:00 +0000 Subject: [PATCH] [ADD] core: new magical `odoo.upgrades` package This package point to first package found in `upgrades_paths` or fallback to alias of legacy `odoo.addons.base.maintenance.migrations`. closes odoo/odoo#32650 Signed-off-by: Christophe Simonis --- odoo/upgrades.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 odoo/upgrades.py diff --git a/odoo/upgrades.py b/odoo/upgrades.py new file mode 100644 index 00000000000..c83dae7b2e5 --- /dev/null +++ b/odoo/upgrades.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +import importlib.util +import os +import sys + +from odoo.tools import config +from odoo.modules.module import get_resource_path + +for path in config.get("upgrades_paths", "").split(","): + if os.path.exists(os.path.join(path, "__init__.py")): + break +else: + # failback to legacy "maintenance/migrations" package + path = get_resource_path("base", "maintenance", "migrations") + +if not path: + raise ImportError("No package found in `upgrades_paths`") + +spec = importlib.util.spec_from_file_location("odoo.upgrades", os.path.join(path, "__init__.py")) +module = importlib.util.module_from_spec(spec) +spec.loader.exec_module(module) + +# shadow module and register under legacy name +sys.modules["odoo.upgrades"] = sys.modules["odoo.addons.base.maintenance.migrations"] = module