Coverage for ingadhoc-odoo-saas-adhoc / saas_provider_upgrade / wizards / upgrade_line_script_revert.py: 94%
29 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 19:24 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 19:24 +0000
1from odoo import _, fields, models
2from odoo.exceptions import UserError
3from odoo.http import request
4from odoo.tools.misc import get_diff
7class UpgradeLineScriptRevert(models.TransientModel):
8 """
9 Wizard to show diff and revert an upgrade line script
10 """
12 _name = "saas.provider.upgrade.revert.wizard"
13 _description = "saas.provider.upgrade.revert.wizard"
15 upgrade_line_id = fields.Many2one(
16 "saas.upgrade.line",
17 required=True,
18 )
19 script = fields.Text(
20 readonly=True,
21 )
22 prev_script_id = fields.Many2one(
23 "saas.upgrade.line.script",
24 readonly=True,
25 )
26 execution_mode_prev = fields.Selection(
27 related="prev_script_id.execution_mode",
28 string="Previous Execution Mode",
29 )
30 script_diff = fields.Html(
31 readonly=True,
32 sanitize_tags=False,
33 )
35 def default_get(self, fields_list: list) -> dict:
36 defaults = super().default_get(fields_list)
37 upgrade_line = self.env["saas.upgrade.line"].browse(self.env.context.get("upgrade_line_id"))
38 to_version = self.env.context.get("to_version")
39 prev_script = self.env["saas.upgrade.line.script"].search(
40 [("upgrade_line_id", "=", upgrade_line.id), ("version", "=", to_version)]
41 )
42 if not prev_script: 42 ↛ 43line 42 didn't jump to line 43 because the condition on line 42 was never true
43 raise UserError(self.env._("Error! There should be a previous script!"))
44 prev_script = prev_script[0]
45 script_diff = get_diff(
46 [upgrade_line.script, f"Version {upgrade_line.script_version} (Current)"],
47 [prev_script.script, f"Version {prev_script.version}"],
48 custom_style=False,
49 dark_color_scheme=request and request.httprequest.cookies.get("color_scheme") == "dark",
50 )
51 defaults.update(
52 {
53 "upgrade_line_id": upgrade_line.id,
54 "script": upgrade_line.script,
55 "prev_script_id": prev_script.id,
56 "script_diff": script_diff,
57 }
58 )
59 return defaults
61 def confirm(self):
62 """
63 Action to confirm the revert of the script
64 """
65 self.ensure_one()
66 to_version = self.env.context.get("to_version")
67 self.upgrade_line_id.message_post(body=_("Script reverted to version %s.") % to_version)
68 new_script = self.env["saas.upgrade.line.script"].create(
69 {
70 "script": self.prev_script_id.script,
71 "execution_mode": self.execution_mode_prev,
72 "version": self.upgrade_line_id.actual_script_id.version + 1,
73 "upgrade_line_id": self.upgrade_line_id.id,
74 }
75 )
76 self.upgrade_line_id.write(
77 {
78 "actual_script_id": new_script.id,
79 "dev_script": False,
80 }
81 )