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:05 +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 

9 

10from ..constants import UL_EXECUTION_MODES 

11 

12 

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" 

18 

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 ) 

42 

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})" 

47 

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 ) 

68 

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 ) 

89 

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