Skip to content
Extraits de code Groupes Projets
Valider 7cfb34c1 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

[REF] new logs and move functions to account and repartition_keys

parent 60cdbfd4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!12Nouveau logs pour les périmètres
# Do NOT update manually; changes here will be overwritten by Copier
_commit: v1.19.1
_src_path: https://github.com/OCA/oca-addons-repo-template.git
additional_ruff_rules: []
ci: GitHub
convert_readme_fragments_to_markdown: true
generate_requirements_txt: false
github_check_license: false
github_ci_extra_env: {}
github_enable_codecov: false
github_enable_makepot: false
github_enable_stale_action: false
github_enforce_dev_status_compatibility: false
include_wkhtmltopdf: false
odoo_test_flavor: OCB
odoo_version: 16.0
org_name: Le Filament
org_slug: lefilament
rebel_module_groups: []
repo_description: ''
repo_name: Module for creating templates
repo_slug: template_module
repo_website: https://le-filament.com
use_pyproject_toml: false
use_ruff: true
...@@ -24,6 +24,7 @@ var/ ...@@ -24,6 +24,7 @@ var/
.installed.cfg .installed.cfg
*.egg *.egg
*.eggs *.eggs
.copier-answers.yml
# Installer logs # Installer logs
pip-log.txt pip-log.txt
......
...@@ -5,12 +5,12 @@ load-plugins=pylint_odoo ...@@ -5,12 +5,12 @@ load-plugins=pylint_odoo
score=n score=n
[ODOOLINT] [ODOOLINT]
readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest_required_authors=Le Filament manifest-required-authors=Le Filament
manifest_required_keys=license manifest-required-keys=license
manifest_deprecated_keys=description,active manifest-deprecated-keys=description,active
license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
valid_odoo_versions=16.0 valid-odoo-versions=16.0
[MESSAGES CONTROL] [MESSAGES CONTROL]
disable=all disable=all
......
...@@ -10,16 +10,9 @@ ...@@ -10,16 +10,9 @@
"data/mail_template_data.xml", "data/mail_template_data.xml",
"data/cron_data.xml", "data/cron_data.xml",
# views # views
"views/acc_logs_views.xml",
"views/acc_operation_views.xml", "views/acc_operation_views.xml",
# views menu
], ],
"assets": {
"web._assets_primary_variables": [],
"web._assets_frontend_helpers": [],
"web.assets_frontend": [],
"web.assets_tests": [],
"web.assets_qweb": [],
},
"installable": True, "installable": True,
"auto_install": False, "auto_install": False,
} }
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
/> />
Le service client Elocoop<br /> Le service client Elocoop<br />
<br /> <br />
<t t-out="object.message" t-options="{'widget':'html'}" /><br /> <t t-out="object.full_message" t-options="{'widget':'html'}" /><br />
</div> </div>
</field> </field>
</record> </record>
......
# Copyright 2024- Le Filament (https://le-filament.com) # Copyright 2024- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import models from datetime import date
from odoo import fields, models
class AccLogs(models.Model): class AccLogs(models.Model):
...@@ -9,6 +11,8 @@ class AccLogs(models.Model): ...@@ -9,6 +11,8 @@ class AccLogs(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Fields declaration # Fields declaration
# ------------------------------------------------------ # ------------------------------------------------------
json_data = fields.Json("Message details (JSON)")
full_message = fields.Text(compute="_compute_full_message")
# ------------------------------------------------------ # ------------------------------------------------------
# SQL Constraints # SQL Constraints
...@@ -21,6 +25,13 @@ class AccLogs(models.Model): ...@@ -21,6 +25,13 @@ class AccLogs(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Computed fields / Search Fields # Computed fields / Search Fields
# ------------------------------------------------------ # ------------------------------------------------------
def _compute_full_message(self):
for log in self:
log.full_message = log.message
if log.json_data:
log.full_message += self._gen_error_table()
log.full_message += self._gen_log_tables()
log.full_message += self._gen_log_prm_lists()
# ------------------------------------------------------ # ------------------------------------------------------
# Onchange / Constraints # Onchange / Constraints
...@@ -44,3 +55,146 @@ class AccLogs(models.Model): ...@@ -44,3 +55,146 @@ class AccLogs(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Business methods # Business methods
# ------------------------------------------------------ # ------------------------------------------------------
def _gen_error_table(self):
message = ""
error_list = self.json_data["exception"]
if len(error_list) == 0:
return message
message += (
"<h5>Erreurs survenues pendant le "
"traitement des données provenant de Enedis</h5>"
)
message += "<table class='table table-bordered table-striped'>"
message += "<thead><th>description</th><th>action à prendre</th></thead>"
for error_log in error_list:
message += f"<tr><td>{error_log['message']}<br/>"
if "data" in error_log:
message += f"{error_log['data']}<br/>"
if self.env.user.has_group("base.group_no_one"):
message += f"{error_log['stack_trace']}"
message += "</td><td>"
if "actions" in error_log:
message += "<ul>"
for v in error_log["actions"]:
message += f"<li>{v}</li>"
message += "</ul>"
message += "</td></tr>"
message += "</table>"
return message
def _gen_error_message(self):
message = ""
error_list = self.json_data["exception"]
if len(error_list) == 0:
return message
message += (
"Erreurs survenues pendant le "
"traitement des données provenant de Enedis\n\n"
)
for error_log in error_list:
message += f"{error_log['message']}\n"
if "data" in error_log:
message += f"{error_log['data']}\n"
if self.env.user.has_group("base.group_no_one"):
message += f"{error_log['stack_trace']}\n"
if "actions" in error_log:
message += "Actions :\n"
for v in error_log["actions"]:
message += f"- {v}\n"
message += "\n\n"
return message
def _gen_log_table(self, log_type, header):
message = ""
if len(self.json_data[log_type]) == 0:
return message
message += f"<h5>{header}</h5>"
message += "<table class='table table-striped'>"
message += "<thead>"
message += (
"<th>PRM</th><th>type</th><th>début</th><th>fin</th>"
"<th>action à prendre</th>"
)
message += "</thead>"
for single_log in self.json_data[log_type]:
end_date = (
""
if single_log["end"] == "9999-12-31"
else date.fromisoformat(single_log["end"]).strftime("%d/%m/%Y")
)
message += "<tr>"
message += f"<td class='text-nowrap'>{single_log['id']}</td>"
message += (
f"<td class='text-nowrap'>"
f"{'injection' if single_log['prm_type'] == 'injection' else 'soutirage'}"
f"</td>"
)
message += "<td class='text-nowrap'>"
message += f"{date.fromisoformat(single_log['start']):%d/%m/%Y}</td>"
message += f"<td class='text-nowrap' style='width: 10em;'>{end_date}</td>"
message += "<td>"
if "actions" in single_log:
message += "<ul>"
for v in single_log["actions"]:
message += f"<li>{v}</li>"
message += "</ul>"
message += "</td>"
message += "</tr>"
message += "</table>"
return message
def _gen_log_tables(self):
message = ""
message += self._gen_log_table(
"prm_in",
"Entrées de PRM : des actions sont requises",
)
message += self._gen_log_table(
"period_date_change",
"Nouvelles dates : des actions sont requises",
)
message += self._gen_log_table(
"prm_out",
"Sorties de PRM : "
"pour information, ne requiert pas d'action de votre part",
)
message += self._gen_log_table(
"no_change_prm",
"Pas de changement sur ces PRM : "
"pour information, ne requiert pas d'action de votre part",
)
return message
def gen_log_prm_list(self, prm_type):
message = ""
t_ids = [
item["id"]
for item in self.json_data["no_change_prm"]
+ self.json_data["prm_in"]
+ self.json_data["prm_out"]
if item.get("prm_type") == prm_type
]
n = len(t_ids)
if n == 0:
return message
header = f"Pour information, liste des {str(n)} PRM " + (
"d'injection :" if prm_type == "injection" else "de soutirage :"
)
message += f"<h5>{header}</h5>"
message += "<table class='table table-striped'>"
for cid in t_ids:
message += "<tr>"
message += f"<td>{cid}</td>"
message += "</tr>"
message += "</table>"
return message
def _gen_log_prm_lists(self):
message = ""
message += self.gen_log_prm_list("injection")
message += self.gen_log_prm_list("delivery")
return message
Ce diff est replié.
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2025- Le Filament (https://le-filament.com)
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="acc_logs_form" model="ir.ui.view">
<field name="name">acc.logs.form</field>
<field name="model">acc.logs</field>
<field name="inherit_id" ref="oacc.acc_logs_form" />
<field name="arch" type="xml">
<field name="message" position="attributes">
<attribute name="invisible">1</attribute>
</field>
<field name="message" position="after">
<field
class="o_field_header"
string="Message"
name="full_message"
readonly="1"
widget="html"
/>
</field>
</field>
</record>
</odoo>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter