Skip to content

Commit 8c060c2

Browse files
jjscarafiabruno-zanotti
authored andcommitted
[ADD] odoo-module-migrator: consume data from controller
1 parent 20d98f8 commit 8c060c2

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

README.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
odoo-module-migrator
1111
====================
1212

13+
TODO documentar uso con controlador
14+
1315
``odoo-module-migrator`` is a python3 library that allows you to automatically migrate
1416
module code to make it compatible with newer Odoo version.
1517
for exemple:

odoo_module_migrate/base_migration_script.py

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import glob
1111
import yaml
1212
import importlib
13+
import requests
1314

1415

1516
class BaseMigrationScript(object):
@@ -25,6 +26,35 @@ class BaseMigrationScript(object):
2526
_GLOBAL_FUNCTIONS = [] # [function_object]
2627
_module_path = ""
2728

29+
def _get_controller_data(self, version_from_to):
30+
# data = request.get(url, version_from, version_to)
31+
# version_from_to:
32+
# - migrate_100_allways.py
33+
# - migrate_160_170.py
34+
# - migrate_allways.py
35+
# [0] - migrate
36+
# [1] - version_from
37+
# [2] - version_to
38+
list_version_from_to = version_from_to.split("_")
39+
if len(list_version_from_to) != 3 or "allways" in list_version_from_to:
40+
return False
41+
version_from = list_version_from_to[1]
42+
version_to = list_version_from_to[2]
43+
return self._get_changes_from_adhoc(version_from, version_to)
44+
45+
def _get_changes_from_adhoc(self, init_version_name, target_version_name):
46+
base_url = "https://adhoc.com.ar"
47+
endpoint = "/version_changes/{from_version}/{to_version}".format(
48+
from_version=init_version_name, to_version=target_version_name
49+
)
50+
uri = base_url + endpoint
51+
self._requests = requests.Session()
52+
response = self._requests.get(uri)
53+
if response and response.ok:
54+
data_version_changes = response.json()
55+
return data_version_changes
56+
return False
57+
2858
def parse_rules(self):
2959
script_parts = inspect.getfile(self.__class__).split("/")
3060
migrate_from_to = script_parts[-1].split(".")[0]
@@ -100,6 +130,58 @@ def parse_rules(self):
100130
rules[rule]["doc"].update(new_rules)
101131
elif rules[rule]["type"] == TYPE_ARRAY:
102132
rules[rule]["doc"].extend(new_rules)
133+
134+
# Read form controller
135+
data_version_changes = self._get_controller_data(migrate_from_to)
136+
if data_version_changes:
137+
for change in data_version_changes.values():
138+
# {'2': {
139+
# 'change_type': 'rename',
140+
# 'major_version_id': '17.0',
141+
# 'model': False,
142+
# 'field': False,
143+
# 'model_type': 'model',
144+
# 'old_name': 'mail.channel',
145+
# 'new_name': 'discuss.channel',
146+
# 'notes': '<p>Más información sobre este cambio <a href="https://github.com/odoo/odoo/pull/118354/" target="_blank">en PR 118354</a></p>'
147+
# }
148+
# }
149+
150+
if (
151+
change["change_type"] == "rename"
152+
and change["model_type"] == "model"
153+
):
154+
# [(old.model.name, new.model.name, more_info)]
155+
new_rules = [
156+
[change["old_name"], change["new_name"], change["notes"]]
157+
]
158+
rules["_RENAMED_MODELS"]["doc"].extend(new_rules)
159+
160+
if (
161+
change["change_type"] == "rename"
162+
and change["model_type"] == "field"
163+
):
164+
# [(model_name, old_field_name, new_field_name, more_info), ...)]
165+
new_rules = [
166+
[change["model"], change["old_name"], change["new_name"], change["notes"]]
167+
]
168+
rules["_RENAMED_FIELDS"]["doc"].extend(new_rules)
169+
170+
if (
171+
change["change_type"] == "remove"
172+
and change["model_type"] == "model"
173+
):
174+
# [(old.model.name, more_info)]
175+
new_rules = [[change["old_name"], change["notes"]]]
176+
rules["_REMOVED_MODELS"]["doc"].extend(new_rules)
177+
178+
if (
179+
change["change_type"] == "remove"
180+
and change["model_type"] == "field"
181+
):
182+
# [(model_name, field_name, more_info), ...)]
183+
new_rules = [[change["model"], change["old_name"], change["notes"]]]
184+
rules["_REMOVED_FIELDS"]["doc"].extend(new_rules)
103185
# extend
104186
for rule, data in rules.items():
105187
rtype = data["type"]

0 commit comments

Comments
 (0)