Coverage for ingadhoc-odoo-saas-adhoc / saas_provider_upgrade / controllers / main.py: 28%

25 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-09 18:15 +0000

1import json 

2 

3from odoo import http 

4from odoo.http import request 

5from odoo.tools.mail import html_to_inner_content 

6 

7 

8class MajorVersionChange(http.Controller): 

9 @http.route("/version_changes/<version_from>/<version_to>", type="http", auth="public") 

10 def get_version_changes(self, version_from, version_to): 

11 """Por como hicimos el patch en odoo module migrate este controlador lo va a llamar siempre saltando una sola version. 

12 Si module migrate se llama salteando versions, se va a llamar varias veces saltado de una en una 

13 Ahora bien, nos interesa igual tener compatibilidad con pedir varios salteos para renderizar cambios a cliente y/o custom upgrade lines que pongamos 

14 Ej. de como llamar a este contralador: /version_changes/130/160 

15 """ 

16 try: 

17 version_from = float(version_from) / 10 

18 version_to = float(version_to) / 10 

19 except: 

20 return request.not_found() 

21 # si se llama al controlador salteando versiones, con este codigo encontramos todas las versiones entre las version from y to 

22 versions = [float(i) for i in range(int(version_from) + 1, int(version_to) + 1)] 

23 major_version_ids = request.env["saas.odoo.major_version"].sudo().search([("name", "in", versions)]) 

24 major_version_change_ids = ( 

25 request.env["major.version.change"].sudo().search([("major_version_id", "in", major_version_ids.ids)]) 

26 ) 

27 dict_changes = self.format_version_changes_ids(major_version_change_ids) 

28 json_changes = json.dumps(dict_changes) 

29 return request.make_response(json_changes) 

30 

31 def format_version_changes_ids(self, records=None): 

32 result = dict() 

33 if not records: 

34 return result 

35 for record in records: 

36 result[str(record.id)] = { 

37 "change_type": record.change_type, 

38 "major_version_id": record.major_version_id.name, 

39 "model": record.model, 

40 "field": record.field, 

41 "model_type": record.model_type, 

42 "old_name": record.old_name, 

43 "new_name": record.new_name, 

44 "notes": html_to_inner_content(record.notes or ""), 

45 } 

46 return result