Skip to content

Commit 4f7faa9

Browse files
committed
Compat with Odoo 19.0
1 parent 50e0e80 commit 4f7faa9

File tree

3 files changed

+48
-30
lines changed

3 files changed

+48
-30
lines changed

src/doblib/env.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,20 @@ def _init_odoo(self):
236236
sys.path.append(path)
237237

238238
self._link_modules()
239+
240+
# Initialize Odoo
241+
import odoo
242+
243+
if self.odoo_version() >= (19,):
244+
import odoo.init
245+
239246
return path
240247

248+
def odoo_version(self):
249+
import odoo.release
250+
251+
return odoo.release.version_info
252+
241253
@contextmanager
242254
def env(self, db_name, rollback=False):
243255
"""Create an environment from a registry"""

src/doblib/module.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ def install_all(self, db_name, modules):
9393
"""Install all modules"""
9494
# pylint: disable=C0415,E0401
9595
import odoo
96-
import odoo.release
9796
from odoo.modules.registry import Registry
9897
from odoo.tools import config
9998

@@ -108,8 +107,10 @@ def install_all(self, db_name, modules):
108107
config["load_language"] = languages
109108

110109
kwargs = {"update_module": True}
111-
if odoo.release.version_info < (19,):
110+
if self.odoo_version() < (19,):
112111
kwargs["force_demo"] = not without_demo
112+
else:
113+
kwargs["install_modules"] = list(modules)
113114

114115
Registry.new(db_name, **kwargs)
115116

@@ -186,9 +187,14 @@ def update_specific(
186187
modules.difference_update(blacklist or [])
187188

188189
config["init"] = {}
189-
config["update"] = dict.fromkeys(modules, 1)
190190
config["overwrite_existing_translations"] = True
191-
Registry.new(db_name, update_module=True)
191+
kwargs = {"update_module": True}
192+
if self.odoo_version() < (19,):
193+
config["update"] = dict.fromkeys(modules, 1)
194+
else:
195+
kwargs["upgrade_modules"] = list(modules)
196+
197+
Registry.new(db_name, **kwargs)
192198

193199
def update_changed(self, db_name, blacklist=None):
194200
"""Update only changed modules"""
@@ -257,6 +263,9 @@ def update(self, args=None):
257263
else:
258264
installed = self._get_installed_modules(db_name)
259265
modules = self._get_modules()
266+
if args.modules:
267+
modules.update(args.modules)
268+
260269
uninstalled = modules.difference(installed)
261270

262271
# Install all modules

tests/test_module.py

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from unittest import mock
88

99
import pytest
10-
1110
from doblib import base
1211
from doblib.module import ModuleEnvironment, no_flags
1312

@@ -21,6 +20,22 @@ def env():
2120
return env
2221

2322

23+
def mock_odoo_import():
24+
odoo = sys.modules["odoo"] = mock.MagicMock()
25+
sys.modules["odoo.tools"] = odoo.tools
26+
sys.modules["odoo.release"] = odoo.release = mock.MagicMock(version_info=(18,))
27+
sys.modules["odoo.api"] = odoo.api
28+
sys.modules["odoo.cli"] = odoo.cli
29+
sys.modules["odoo.cli.server"] = odoo.cli.server
30+
sys.modules["odoo.tools"] = odoo.tools
31+
sys.modules["odoo.modules"] = odoo.modules
32+
sys.modules["odoo.modules.db"] = odoo.modules.db
33+
sys.modules["odoo.modules.registry"] = odoo.modules.registry
34+
sys.modules["odoo.release"] = odoo.release
35+
sys.modules["odoo.sql_db"] = odoo.sql_db
36+
return odoo
37+
38+
2439
def test_run_migration(env):
2540
cur = os.getcwd()
2641
os.chdir("tests/environment/")
@@ -85,11 +100,7 @@ def test_get_installed_modules(env):
85100

86101

87102
def test_install_all(env):
88-
odoo = sys.modules["odoo"] = mock.MagicMock()
89-
sys.modules["odoo.release"] = odoo.release = mock.MagicMock(version_info=(18,))
90-
sys.modules["odoo.tools"] = odoo.tools
91-
sys.modules["odoo.modules"] = odoo.modules
92-
sys.modules["odoo.modules.registry"] = odoo.modules.registry
103+
odoo = mock_odoo_import()
93104

94105
env.install_all("odoo", ["module"])
95106
odoo.modules.registry.Registry.new.assert_called_once_with(
@@ -103,10 +114,7 @@ def test_install_all(env):
103114

104115

105116
def test_update_all(env):
106-
odoo = sys.modules["odoo"] = mock.MagicMock()
107-
sys.modules["odoo.tools"] = odoo.tools
108-
sys.modules["odoo.modules"] = odoo.modules
109-
sys.modules["odoo.modules.registry"] = odoo.modules.registry
117+
odoo = mock_odoo_import()
110118

111119
env.update_specific("odoo", installed=True)
112120
odoo.modules.registry.Registry.new.assert_called_once_with(
@@ -116,10 +124,7 @@ def test_update_all(env):
116124

117125

118126
def test_update_listed(env):
119-
odoo = sys.modules["odoo"] = mock.MagicMock()
120-
sys.modules["odoo.tools"] = odoo.tools
121-
sys.modules["odoo.modules"] = odoo.modules
122-
sys.modules["odoo.modules.registry"] = odoo.modules.registry
127+
odoo = mock_odoo_import()
123128
env._get_modules = mock.MagicMock()
124129

125130
env.update_specific("odoo", listed=True)
@@ -149,17 +154,9 @@ def test_update_changed(env):
149154

150155
def test_update(env):
151156
# Quite complex and we have to mock plenty of stuff
152-
odoo = sys.modules["odoo"] = mock.MagicMock()
153-
tools = sys.modules["odoo.tools"] = odoo.tools
154-
sys.modules["odoo.api"] = odoo.api
155-
sys.modules["odoo.cli"] = odoo.cli
156-
sys.modules["odoo.cli.server"] = odoo.cli.server
157-
sys.modules["odoo.tools"] = odoo.tools
158-
sys.modules["odoo.modules"] = odoo.modules
159-
sys.modules["odoo.modules.db"] = odoo.modules.db
160-
sys.modules["odoo.modules.registry"] = odoo.modules.registry
161-
sys.modules["odoo.release"] = odoo.release
162-
sys.modules["odoo.sql_db"] = odoo.sql_db
157+
odoo = mock_odoo_import()
158+
tools = odoo.tools
159+
163160
tools.config.__getitem__.return_value = "odoo"
164161
odoo.release.version_info = (14, 0)
165162
env.generate_config = mock.MagicMock()
@@ -196,7 +193,7 @@ def test_update(env):
196193
env.update_specific.assert_called_once_with(
197194
"odoo",
198195
whitelist=["abc", "def"],
199-
blacklist={"normal"},
196+
blacklist={"abc", "def", "normal"},
200197
installed=False,
201198
listed=False,
202199
)

0 commit comments

Comments
 (0)