Dev 4 finish openupgrade analyse
This commit is contained in:
parent
2f78b256b0
commit
65faab03b6
|
|
@ -279,9 +279,14 @@ def get_openupgrade_analysis_files(
|
||||||
]
|
]
|
||||||
|
|
||||||
for file in files:
|
for file in files:
|
||||||
if file.parent.parent == "migrations":
|
# this part doesn't depends only of the release
|
||||||
|
# 14+ module can have migrations folder.
|
||||||
|
if file.parent.parent.name == "migrations":
|
||||||
module_name = file.parent.parent.parent.name
|
module_name = file.parent.parent.parent.name
|
||||||
else:
|
else:
|
||||||
module_name = file.parent.parent.name
|
module_name = file.parent.parent.name
|
||||||
result[module_name] = file
|
result[module_name] = file
|
||||||
|
logger.debug(
|
||||||
|
"Release %s : %d analysis files found." % (release, len(result))
|
||||||
|
)
|
||||||
return result
|
return result
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,18 @@ workload_settings:
|
||||||
# Porting 10 lines of XML costs 1 minute
|
# Porting 10 lines of XML costs 1 minute
|
||||||
port_per_xml_line_time: 0.10
|
port_per_xml_line_time: 0.10
|
||||||
|
|
||||||
|
# Minimal time for Openupgrade PR
|
||||||
|
open_upgrade_minimal_time: 10
|
||||||
|
|
||||||
|
# time for a line of model in the openupgrade_analysis.txt
|
||||||
|
openupgrade_model_line_time: 10
|
||||||
|
|
||||||
|
# Time for a line of field in the openupgrade_analysis.txt
|
||||||
|
openupgrade_field_line_time: 5
|
||||||
|
|
||||||
|
# Time for a line of XML in the openupgrade_analysis.txt
|
||||||
|
openupgrade_xml_line_time: 0.1
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
REPO_YML_TEMPLATE = """
|
REPO_YML_TEMPLATE = """
|
||||||
|
|
@ -269,19 +281,32 @@ ANALYSIS_HTML_TEMPLATE = """
|
||||||
{% set module_version = odoo_module.get_module_version(release) %}
|
{% set module_version = odoo_module.get_module_version(release) %}
|
||||||
{% if module_version %}
|
{% if module_version %}
|
||||||
{% set size_text = module_version.get_size_text() %}
|
{% set size_text = module_version.get_size_text() %}
|
||||||
|
{% set analysis_text = module_version.get_analysis_text() %}
|
||||||
{% set workload = module_version.workload %}
|
{% set workload = module_version.workload %}
|
||||||
|
|
||||||
<td style="background-color:{{module_version.get_bg_color()}};">
|
<td style="background-color:{{module_version.get_bg_color()}};">
|
||||||
{{module_version.get_text()}}
|
{{module_version.get_text()}}
|
||||||
|
|
||||||
{% if size_text %}
|
|
||||||
<span style="color:gray">({{ size_text}})</span>
|
|
||||||
{% endif %}
|
|
||||||
{% if workload %}
|
{% if workload %}
|
||||||
<span style="background-color:lightblue;">
|
<span style="background-color:lightblue;">
|
||||||
({{ module_version.workload_hour_text()}})
|
({{ module_version.workload_hour_text()}})
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if size_text %}
|
||||||
|
<br/>
|
||||||
|
<span style="color:gray;font-size:11px;font-family:monospace;">
|
||||||
|
({{ size_text}})
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if analysis_text %}
|
||||||
|
<br/>
|
||||||
|
<span style="color:gray;font-size:11px;font-family:monospace;">
|
||||||
|
<a href="{{module_version.analysis_url()}}" target="_blank">
|
||||||
|
({{ analysis_text}})
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
<td style="background-color:gray;"> </td>
|
<td style="background-color:gray;"> </td>
|
||||||
|
|
|
||||||
|
|
@ -75,19 +75,19 @@ class Analysis(object):
|
||||||
module_version.analyse_openupgrade_state(coverage_analysis)
|
module_version.analyse_openupgrade_state(coverage_analysis)
|
||||||
|
|
||||||
for release in self.all_releases[1:]:
|
for release in self.all_releases[1:]:
|
||||||
|
odoo_env_path = get_odoo_env_path(ctx, {"release": release})
|
||||||
|
openupgrade_analysis_files = get_openupgrade_analysis_files(
|
||||||
|
odoo_env_path, release
|
||||||
|
)
|
||||||
|
openupgrade_analysis_files = openupgrade_analysis_files
|
||||||
for odoo_module in filter(
|
for odoo_module in filter(
|
||||||
lambda x: x.module_type == "odoo", self.modules
|
lambda x: x.module_type == "odoo", self.modules
|
||||||
):
|
):
|
||||||
odoo_env_path = get_odoo_env_path(ctx, {"release": release})
|
module_version = odoo_module.get_module_version(release)
|
||||||
openupgrade_analysis_files = get_openupgrade_analysis_files(
|
if module_version:
|
||||||
odoo_env_path, release
|
module_version.analyse_openupgrade_work(
|
||||||
)
|
openupgrade_analysis_files
|
||||||
# TODO, FIX ME
|
)
|
||||||
openupgrade_analysis_files = openupgrade_analysis_files
|
|
||||||
# module_version = odoo_module.get_module_version(release)
|
|
||||||
# module_version.analyse_openupgrade_work(
|
|
||||||
# openupgrade_analysis_files
|
|
||||||
# )
|
|
||||||
|
|
||||||
def analyse_missing_module(self):
|
def analyse_missing_module(self):
|
||||||
for odoo_module in filter(
|
for odoo_module in filter(
|
||||||
|
|
@ -435,6 +435,7 @@ class OdooModuleVersion(object):
|
||||||
self.xml_code = 0
|
self.xml_code = 0
|
||||||
self.javascript_code = 0
|
self.javascript_code = 0
|
||||||
self.workload = 0
|
self.workload = 0
|
||||||
|
self.analysis_file = False
|
||||||
self.openupgrade_model_lines = 0
|
self.openupgrade_model_lines = 0
|
||||||
self.openupgrade_field_lines = 0
|
self.openupgrade_field_lines = 0
|
||||||
self.openupgrade_xml_lines = 0
|
self.openupgrade_xml_lines = 0
|
||||||
|
|
@ -452,6 +453,10 @@ class OdooModuleVersion(object):
|
||||||
"port_per_javascript_line_time"
|
"port_per_javascript_line_time"
|
||||||
]
|
]
|
||||||
port_per_xml_line_time = settings["port_per_xml_line_time"]
|
port_per_xml_line_time = settings["port_per_xml_line_time"]
|
||||||
|
open_upgrade_minimal_time = settings["open_upgrade_minimal_time"]
|
||||||
|
openupgrade_model_line_time = settings["openupgrade_model_line_time"]
|
||||||
|
openupgrade_field_line_time = settings["openupgrade_field_line_time"]
|
||||||
|
openupgrade_xml_line_time = settings["openupgrade_xml_line_time"]
|
||||||
|
|
||||||
if self.state in ["merged", "renamed", "normal_loss"]:
|
if self.state in ["merged", "renamed", "normal_loss"]:
|
||||||
# The module has been moved, nothing to do
|
# The module has been moved, nothing to do
|
||||||
|
|
@ -467,8 +472,22 @@ class OdooModuleVersion(object):
|
||||||
):
|
):
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
# TODO
|
self.workload = (
|
||||||
self.workload = 99
|
# Minimal openupgrade time
|
||||||
|
open_upgrade_minimal_time
|
||||||
|
# Add model time
|
||||||
|
+ (
|
||||||
|
openupgrade_model_line_time
|
||||||
|
* self.openupgrade_model_lines
|
||||||
|
)
|
||||||
|
# Add field Time
|
||||||
|
+ (
|
||||||
|
openupgrade_field_line_time
|
||||||
|
* self.openupgrade_field_lines
|
||||||
|
)
|
||||||
|
# Add XML Time
|
||||||
|
+ (openupgrade_xml_line_time * self.openupgrade_xml_lines)
|
||||||
|
)
|
||||||
|
|
||||||
# OCA / Custom Module
|
# OCA / Custom Module
|
||||||
if self.release != self.odoo_module.analyse.final_release:
|
if self.release != self.odoo_module.analyse.final_release:
|
||||||
|
|
@ -541,17 +560,41 @@ class OdooModuleVersion(object):
|
||||||
if self.release == self.odoo_module.analyse.initial_release:
|
if self.release == self.odoo_module.analyse.initial_release:
|
||||||
return
|
return
|
||||||
analysis_file = analysis_files.get(self.odoo_module.name, False)
|
analysis_file = analysis_files.get(self.odoo_module.name, False)
|
||||||
if analysis_file:
|
|
||||||
# TODO
|
if not analysis_file:
|
||||||
pass
|
return
|
||||||
else:
|
|
||||||
# TODO
|
self.analysis_file = analysis_file
|
||||||
pass
|
with open(analysis_file, "r") as input_file:
|
||||||
|
line_type = False
|
||||||
|
for line in input_file.readlines():
|
||||||
|
if line.startswith("---Models in module"):
|
||||||
|
line_type = "model"
|
||||||
|
continue
|
||||||
|
elif line.startswith("---Fields in module"):
|
||||||
|
line_type = "field"
|
||||||
|
continue
|
||||||
|
elif line.startswith("---XML records in module"):
|
||||||
|
line_type = "xml"
|
||||||
|
continue
|
||||||
|
elif line.startswith("---nothing has changed in this module"):
|
||||||
|
continue
|
||||||
|
elif line.startswith("---"):
|
||||||
|
raise Exception("comment %s not undestood" % line)
|
||||||
|
|
||||||
|
if line_type == "model":
|
||||||
|
self.openupgrade_model_lines += 1
|
||||||
|
elif line_type == "field":
|
||||||
|
self.openupgrade_field_lines += 1
|
||||||
|
elif line_type == "xml":
|
||||||
|
self.openupgrade_xml_lines += 1
|
||||||
|
|
||||||
def workload_hour_text(self):
|
def workload_hour_text(self):
|
||||||
if not self.workload:
|
if not self.workload:
|
||||||
return ""
|
return ""
|
||||||
return "%d h" % (int(round(self.workload / 60)))
|
hour = int(self.workload // 60)
|
||||||
|
minute = round(self.workload % 60)
|
||||||
|
return f"{hour}h{minute:02}"
|
||||||
|
|
||||||
def get_size_text(self):
|
def get_size_text(self):
|
||||||
data = {
|
data = {
|
||||||
|
|
@ -566,6 +609,22 @@ class OdooModuleVersion(object):
|
||||||
else:
|
else:
|
||||||
return ", ".join(["%s: %s" % (a, b) for a, b in data.items()])
|
return ", ".join(["%s: %s" % (a, b) for a, b in data.items()])
|
||||||
|
|
||||||
|
def get_analysis_text(self):
|
||||||
|
data = {
|
||||||
|
"Model": self.openupgrade_model_lines,
|
||||||
|
"Field": self.openupgrade_field_lines,
|
||||||
|
"XML": self.openupgrade_xml_lines,
|
||||||
|
}
|
||||||
|
# Remove empty values
|
||||||
|
data = {k: v for k, v in data.items() if v}
|
||||||
|
if not data:
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
return ", ".join(["%s: %s" % (a, b) for a, b in data.items()])
|
||||||
|
|
||||||
|
def analysis_url(self):
|
||||||
|
return os.path.relpath(self.analysis_file, Path(os.getcwd()))
|
||||||
|
|
||||||
def analyse_missing_module(self):
|
def analyse_missing_module(self):
|
||||||
last_existing_version = self.get_last_existing_version()
|
last_existing_version = self.get_last_existing_version()
|
||||||
last_existing_version.analyse_size()
|
last_existing_version.analyse_size()
|
||||||
|
|
|
||||||
|
|
@ -49,3 +49,15 @@ workload_settings:
|
||||||
|
|
||||||
# Porting 10 lines of XML costs 1 minute
|
# Porting 10 lines of XML costs 1 minute
|
||||||
port_per_xml_line_time: 0.10
|
port_per_xml_line_time: 0.10
|
||||||
|
|
||||||
|
# Minimal time for Openupgrade PR
|
||||||
|
open_upgrade_minimal_time: 10
|
||||||
|
|
||||||
|
# time for a line of model in the openupgrade_analysis.txt
|
||||||
|
openupgrade_model_line_time: 10
|
||||||
|
|
||||||
|
# Time for a line of field in the openupgrade_analysis.txt
|
||||||
|
openupgrade_field_line_time: 5
|
||||||
|
|
||||||
|
# Time for a line of XML in the openupgrade_analysis.txt
|
||||||
|
openupgrade_xml_line_time: 0.1
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user