Skip to content

Commit 1c9bfbf

Browse files
committed
[FIX] Work on Odoo 19.0 support
1 parent bfdba5e commit 1c9bfbf

File tree

11 files changed

+91
-41
lines changed

11 files changed

+91
-41
lines changed

src/doblib/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION = "0.19.7"
1+
VERSION = "0.19.8"

src/doblib/action.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,13 +439,16 @@ def apply_action(self, args=None):
439439

440440
# pylint: disable=C0415,E0401
441441
import odoo
442+
from odoo.cli.server import report_configuration
442443
from odoo.tools import config
443444

444445
# Load the Odoo configuration
445446
config.parse_config(["-c", base.ODOO_CONFIG])
446-
odoo.cli.server.report_configuration()
447+
report_configuration()
447448

448449
db_name = config["db_name"]
450+
if isinstance(db_name, list) and db_name:
451+
db_name = db_name[0]
449452

450453
utils.info(f"Running {args.action}")
451454
with self._manage():

src/doblib/ci.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ def test(self, args=None):
210210

211211
# pylint: disable=C0415,E0401
212212
import odoo
213+
from odoo.cli.server import report_configuration
213214
from odoo.tools import config
214215

215216
# Append needed parameter
@@ -222,7 +223,7 @@ def test(self, args=None):
222223
# Load the odoo configuration
223224
with self._manage():
224225
config.parse_config(["-c", base.ODOO_CONFIG])
225-
odoo.cli.server.report_configuration()
226+
report_configuration()
226227
# Pass the arguments to pytest
227228
sys.argv = sys.argv[:1] + args
228229
result = pytest.main()

src/doblib/env.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,13 @@ def _link_modules(self):
186186
os.makedirs(base.ADDON_PATH, exist_ok=True)
187187
utils.info("Linking Odoo modules")
188188

189+
path = self.get(base.SECTION, "odoo")
190+
if path:
191+
base_path = f"{path}/addons/base"
192+
link_path = os.path.join(base.ADDON_PATH, "base")
193+
if not os.path.islink(link_path):
194+
os.symlink(base_path, link_path)
195+
189196
linked_modules = set()
190197
for repo_src, repo in self.get("repos", default={}).items():
191198
target = os.path.abspath(repo.get("addon_path", repo_src))
@@ -236,12 +243,18 @@ def env(self, db_name, rollback=False):
236243
"""Create an environment from a registry"""
237244
# pylint: disable=C0415,E0401
238245
import odoo
246+
from odoo.api import Environment
239247
from odoo.modules.registry import Registry
240248

249+
try:
250+
from odoo.api import SUPERUSER_ID
251+
except ImportError:
252+
from odoo import SUPERUSER_ID
253+
241254
# Get all installed modules
242255
reg = Registry(db_name)
243256
with closing(reg.cursor()) as cr:
244-
yield odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})
257+
yield Environment(cr, SUPERUSER_ID, {})
245258

246259
if rollback:
247260
cr.rollback()
@@ -254,11 +267,12 @@ def _manage(self):
254267
# pylint: disable=import-outside-toplevel
255268
import odoo
256269
import odoo.release
270+
from odoo.api import Environment
257271

258272
if odoo.release.version_info >= (15,):
259273
yield
260274
else:
261-
with odoo.api.Environment.manage():
275+
with Environment.manage():
262276
yield
263277

264278
def generate_config(self):

src/doblib/migrate.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,19 @@ def migrate(self, args):
5151

5252
# pylint: disable=C0415,E0401
5353
import odoo
54+
import odoo.modules.db
55+
import odoo.sql_db
56+
from odoo.cli.server import report_configuration
5457
from odoo.tools import config
5558

5659
# Load the Odoo configuration
5760
config.parse_config(["-c", base.ODOO_CONFIG])
58-
odoo.cli.server.report_configuration()
61+
report_configuration()
5962

6063
db_name = config["db_name"]
64+
if isinstance(db_name, list) and db_name:
65+
db_name = db_name[0]
66+
6167
with self._manage():
6268
# Ensure that the database is initialized
6369
db = odoo.sql_db.db_connect(db_name)

src/doblib/module.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def _run_migration_sql(self, db_name, script_name):
7474

7575
# pylint: disable=C0415,E0401
7676
import odoo
77+
import odoo.sql_db
7778

7879
utils.info(f"Executing {script_name} script")
7980
# Ensure that the database is initialized
@@ -92,6 +93,8 @@ def install_all(self, db_name, modules):
9293
"""Install all modules"""
9394
# pylint: disable=C0415,E0401
9495
import odoo
96+
import odoo.release
97+
from odoo.modules.registry import Registry
9598
from odoo.tools import config
9699

97100
config["init"] = dict.fromkeys(modules, 1)
@@ -104,11 +107,11 @@ def install_all(self, db_name, modules):
104107
elif languages:
105108
config["load_language"] = languages
106109

107-
odoo.modules.registry.Registry.new(
108-
db_name,
109-
update_module=True,
110-
force_demo=not without_demo,
111-
)
110+
kwargs = {"update_module": True}
111+
if odoo.release.version_info < (19,):
112+
kwargs["force_demo"] = not without_demo
113+
114+
Registry.new(db_name, **kwargs)
112115

113116
def check_auto_install(self, db_name):
114117
"""Install auto installable modules if the dependencies are installed"""
@@ -164,6 +167,7 @@ def update_specific(
164167
"""Update all modules"""
165168
# pylint: disable=C0415,E0401
166169
import odoo
170+
from odoo.modules.registry import Registry
167171
from odoo.tools import config
168172

169173
whitelist = set(whitelist or [])
@@ -184,7 +188,7 @@ def update_specific(
184188
config["init"] = {}
185189
config["update"] = dict.fromkeys(modules, 1)
186190
config["overwrite_existing_translations"] = True
187-
odoo.modules.registry.Registry.new(db_name, update_module=True)
191+
Registry.new(db_name, update_module=True)
188192

189193
def update_changed(self, db_name, blacklist=None):
190194
"""Update only changed modules"""
@@ -220,13 +224,19 @@ def update(self, args=None):
220224

221225
# pylint: disable=C0415,E0401
222226
import odoo
227+
import odoo.modules.db
228+
import odoo.sql_db
229+
from odoo.cli.server import report_configuration
223230
from odoo.tools import config
224231

225232
# Load the Odoo configuration
226233
config.parse_config(["-c", base.ODOO_CONFIG])
227-
odoo.cli.server.report_configuration()
234+
report_configuration()
228235

229236
db_name = config["db_name"]
237+
if isinstance(db_name, list) and db_name:
238+
db_name = db_name[0]
239+
230240
with self._manage():
231241
# Ensure that the database is initialized
232242
db = odoo.sql_db.db_connect(db_name)

tests/test_action.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,6 @@ def test_many2one(env):
182182

183183
with mock.patch("random.choice", lambda x: x[0]):
184184
assert env._many2one(rec, "test", domain=[("test", "=", True)]) == 4
185-
assert rec.__getitem__.called_once_with("TEST")
186-
assert search.called_once_with([("test", "=", True)])
187185

188186

189187
def test_many2many(env):
@@ -206,8 +204,6 @@ def test_many2many(env):
206204
assert env._many2many(rec, "test", domain=[("test", "=", True)]) == [
207205
(6, 0, [4])
208206
]
209-
assert rec.__getitem__.called_once_with("TEST")
210-
assert search.called_once_with([("test", "=", True)])
211207

212208
assert env._many2many(rec, "test", length=2) == [(6, 0, [4, 2])]
213209

@@ -425,9 +421,12 @@ def test_apply_action(env):
425421
env.apply_action(["action"])
426422

427423
odoo = sys.modules["odoo"] = mock.MagicMock()
428-
sys.modules["odoo.tools"] = mock.MagicMock()
429-
sys.modules["odoo.modules"] = mock.MagicMock()
430-
sys.modules["odoo.modules.registry"] = mock.MagicMock()
424+
sys.modules["odoo.api"] = odoo.api
425+
sys.modules["odoo.cli"] = odoo.cli
426+
sys.modules["odoo.cli.server"] = odoo.cli.server
427+
sys.modules["odoo.tools"] = odoo.tools
428+
sys.modules["odoo.modules"] = odoo.modules
429+
sys.modules["odoo.modules.registry"] = odoo.modules.registry
431430
sys.modules["odoo.release"] = odoo.release
432431
odoo.release.version_info = (14, 0)
433432
env._init_odoo.return_value = True

tests/test_ci.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@ def env():
2525
@mock.patch("pytest.main", return_value=42)
2626
def test_test(pytest_mock, env):
2727
odoo = sys.modules["odoo"] = mock.MagicMock()
28-
tools = sys.modules["odoo.tools"] = mock.MagicMock()
29-
sys.modules["odoo.modules"] = mock.MagicMock()
30-
sys.modules["odoo.modules.registry"] = mock.MagicMock()
28+
tools = sys.modules["odoo.tools"] = odoo.tools
29+
sys.modules["odoo.api"] = odoo.api
30+
sys.modules["odoo.cli"] = odoo.cli
31+
sys.modules["odoo.cli.server"] = odoo.cli.server
32+
sys.modules["odoo.modules"] = odoo.modules
33+
sys.modules["odoo.modules.registry"] = odoo.modules.registry
3134
sys.modules["odoo.release"] = odoo.release
3235
odoo.release.version_info = (14, 0)
3336

tests/test_environment.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,10 @@ def test_env(env):
110110
with env.env("odoo"):
111111
pass
112112

113-
sys.modules["odoo"] = mock.MagicMock()
114-
sys.modules["odoo.modules"] = mock.MagicMock()
115-
registry = sys.modules["odoo.modules.registry"] = mock.MagicMock()
113+
odoo = sys.modules["odoo"] = mock.MagicMock()
114+
sys.modules["odoo.api"] = odoo.api
115+
sys.modules["odoo.modules"] = odoo.modules
116+
registry = sys.modules["odoo.modules.registry"] = odoo.modules.registry
116117
reg = registry.Registry.return_value = mock.MagicMock()
117118
cr = reg.cursor.return_value = mock.MagicMock()
118119

tests/test_migrate.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,15 @@ def env():
2323
@mock.patch("doblib.aggregate.get_repos", return_value=[{"cwd": "unknown"}])
2424
def test_migrate(repos, env):
2525
odoo = sys.modules["odoo"] = mock.MagicMock()
26-
tools = sys.modules["odoo.tools"] = mock.MagicMock()
27-
sys.modules["odoo.modules"] = mock.MagicMock()
28-
sys.modules["odoo.modules.registry"] = mock.MagicMock()
26+
tools = sys.modules["odoo.tools"] = odoo.tools
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.modules"] = odoo.modules
31+
sys.modules["odoo.modules.db"] = odoo.modules.db
32+
sys.modules["odoo.modules.registry"] = odoo.modules.registry
2933
tools.config.__getitem__.return_value = "odoo"
34+
sys.modules["odoo.sql_db"] = odoo.sql_db
3035
sys.modules["odoo.release"] = odoo.release
3136
odoo.release.version_info = (14, 0)
3237
env.generate_config = mock.MagicMock()

0 commit comments

Comments
 (0)