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 20:33 +0000

1from odoo import _, fields, models 

2from odoo.exceptions import UserError 

3from odoo.http import request 

4from odoo.tools.misc import get_diff 

5 

6 

7class UpgradeLineScriptRevert(models.TransientModel): 

8 """ 

9 Wizard to show diff and revert an upgrade line script 

10 """ 

11 

12 _name = "saas.provider.upgrade.revert.wizard" 

13 _description = "saas.provider.upgrade.revert.wizard" 

14 

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 ) 

34 

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 

60 

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 )