Coverage for ingadhoc-odoo-saas-adhoc / saas_provider_upgrade / models / saas_upgrade_line_script.py: 37%
51 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:15 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:15 +0000
1##############################################################################
2# For copyright and license notices, see __manifest__.py file in module root
3# directory
4##############################################################################
5from odoo import _, api, fields, models
6from odoo.exceptions import UserError
7from odoo.http import request
8from odoo.tools.misc import get_diff
10from ..constants import UL_EXECUTION_MODES
13class SaasUpgradeLineScript(models.Model):
14 _name = "saas.upgrade.line.script"
15 _inherit = ["saas.provider.upgrade.util"]
16 _description = "Upgrade Line Script"
17 _order = "version desc"
19 script = fields.Text()
20 prev_diff = fields.Html(
21 sanitize_tags=False,
22 compute="_compute_prev_diff",
23 )
24 hard_diff = fields.Html(
25 sanitize_tags=False,
26 compute="_compute_hard_diff",
27 )
28 version = fields.Integer()
29 upgrade_line_id = fields.Many2one(
30 "saas.upgrade.line",
31 ondelete="cascade",
32 index="btree_not_null",
33 )
34 is_actual_version = fields.Boolean(
35 compute="_compute_is_actual_version",
36 )
37 execution_mode = fields.Selection(
38 UL_EXECUTION_MODES,
39 required=True,
40 default="odooly",
41 )
43 @api.depends("upgrade_line_id", "version")
44 def _compute_display_name(self):
45 for rec in self:
46 rec.display_name = f"{rec.upgrade_line_id.name} - {rec.version} ({rec.execution_mode})"
48 @api.depends("version")
49 def _compute_prev_diff(self):
50 for rec in self:
51 if rec.version == 1:
52 rec.prev_diff = False
53 continue
54 prev_script = self.env["saas.upgrade.line.script"].search(
55 [("upgrade_line_id", "=", rec.upgrade_line_id.id), ("version", "=", rec.version - 1)]
56 )
57 if not prev_script:
58 raise UserError(_("Error! Debería haber un script previo!"))
59 prev_script = prev_script[0]
60 prev_script = [prev_script.script or "", "Previous Version"]
61 this_script = [rec.script or "", "This Version"]
62 rec.prev_diff = get_diff(
63 prev_script,
64 this_script,
65 custom_style=False,
66 dark_color_scheme=request and request.httprequest.cookies.get("color_scheme") == "dark",
67 )
69 @api.depends("version")
70 def _compute_hard_diff(self):
71 for rec in self:
72 if rec.is_actual_version:
73 rec.hard_diff = False
74 continue
75 actual_script = self.env["saas.upgrade.line.script"].search(
76 [("upgrade_line_id", "=", rec.upgrade_line_id.id)]
77 )
78 if not actual_script:
79 raise UserError(_("Error! Debería haber un script actual!"))
80 actual_script = actual_script[0]
81 this_script = [rec.script or "", "This Version"]
82 actual_script = [actual_script.script or "", "Actual Version"]
83 rec.hard_diff = get_diff(
84 actual_script,
85 this_script,
86 custom_style=False,
87 dark_color_scheme=request and request.httprequest.cookies.get("color_scheme") == "dark",
88 )
90 @api.depends("upgrade_line_id.script_version")
91 def _compute_is_actual_version(self):
92 for rec in self:
93 rec.is_actual_version = rec.upgrade_line_id.script_version == rec.version