diff --git a/__init__.py b/__init__.py index aa3b1de85c711057427efc896571a5cc9a75dd1b..1616d6a64aaa6afe10fd4c47baa9123a867ecde4 100644 --- a/__init__.py +++ b/__init__.py @@ -1,5 +1,4 @@ # Copyright 2023 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import models -from . import wizards +from . import models, wizards diff --git a/__manifest__.py b/__manifest__.py index fa2324b8b61a3845f7f5b005aaf65fd0d77d8e22..30aebb971e64fdd4171258927b32c6084070ee11 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -13,7 +13,7 @@ "views/acc_operation_views.xml", # views menu # wizard - "wizards/acc_operation_wizard_views.xml" + "wizards/acc_operation_wizard_views.xml", ], "assets": { "web._assets_primary_variables": [], diff --git a/models/acc_operation.py b/models/acc_operation.py index 67ea361ab329ec27f44b659b3cf927d10ee0ad34..10e1ead58dc1a3d691d0939fbd1e2c1396ed9c07 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -1,10 +1,11 @@ # Copyright 2023 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import logging -import pytz - from datetime import date, datetime +import pytz +from dateutil.relativedelta import relativedelta + from odoo import _, fields, models from odoo.exceptions import UserError @@ -44,34 +45,6 @@ class AccOperation(models.Model): # ------------------------------------------------------ # Actions # ------------------------------------------------------ - # def curves(self): - # self.ensure_one() - # message = self.get_curves() - # - # # Logs information - # log_id = self.env["acc.logs"].create( - # { - # "name": "Appel API Enedis Courbes du " + str(fields.Date.today()), - # "date_launched": fields.Datetime.now(), - # "type_log": "api", - # "message": message, - # "acc_operation_id": self.id, - # } - # ) - # - # view_id = self.env.ref("oacc.acc_logs_form").id - # return { - # "name": "LOGS", - # "view_type": "form", - # "view_mode": "form", - # "views": [(view_id, "form")], - # "res_model": "acc.logs", - # "view_id": view_id, - # "type": "ir.actions.act_window", - # "res_id": log_id.id, - # "target": "new", - # "flags": {"initial_mode": "view"}, - # } def get_perimeter(self): self.ensure_one() @@ -106,11 +79,8 @@ class AccOperation(models.Model): # API functions # ------------------------------------------------------ def curves( - self, - date_start, - date_end, - usage_point_cons_ids=None, - usage_point_prod_ids=None): + self, date_start, date_end, usage_point_cons_ids=None, usage_point_prod_ids=None + ): """ Récupère les données de l'opération concernant le périmètre: - liste des PRM @@ -134,36 +104,55 @@ class AccOperation(models.Model): if usage_point_cons_ids: # Traitement données de cons - message += "<br/><strong>Traitement des données de consommation</strong><br/>" + message += ( + "<br/><strong>Traitement des données de consommation</strong><br/>" + ) for usage_point_id in usage_point_cons_ids: - desc = "Opération: " + self.name + " - PRM: " + usage_point_id.name + " - Date: " + str(fields.Datetime.today()) + desc = ( + "Opération: " + + self.name + + " - PRM: " + + usage_point_id.name + + " - Date: " + + str(fields.Datetime.today()) + ) # message += self.with_delay(description=desc).get_definitive_load_curves( self.with_delay(description=desc).get_definitive_load_curves( - date_end, - date_start, - ["cons,autocons,complement"], - usage_point_id) + date_end, date_start, ["cons,autocons,complement"], usage_point_id + ) if usage_point_prod_ids: # Traitement données de prod message += "<br/><strong>Traitement des données de production</strong><br/>" for usage_point_id in usage_point_prod_ids: - desc = "Opération: " + self.name + " - PRM: " + usage_point_id.name + " - Date: " + str( - fields.Datetime.today()) + desc = ( + "Opération: " + + self.name + + " - PRM: " + + usage_point_id.name + + " - Date: " + + str(fields.Datetime.today()) + ) self.with_delay(description=desc).get_definitive_load_curves( - # message += self.with_delay(description=desc).get_definitive_load_curves( + # message += self.with_delay(description=desc).get_definitive_load_curves( date_end, date_start, ["surplus,prod"], - usage_point_id) + usage_point_id, + ) message += ( "<br/><h1>Fin appel API Courbes: " + str(fields.Datetime.now()) + "</h1>" ) # Logs information - log_id = self.env["acc.logs"].create( + self.env["acc.logs"].create( { - "name": "Appel API Enedis Courbes du " + str(fields.Date.today()) + " - Période " + str(date_start) + " " + str(date_end), + "name": "Appel API Enedis Courbes du " + + str(fields.Date.today()) + + " - Période " + + str(date_start) + + " " + + str(date_end), "date_launched": fields.Datetime.now(), "type_log": "api", "message": message, @@ -172,14 +161,21 @@ class AccOperation(models.Model): ) def get_definitive_load_curves( - self, date_end, date_start, type_curve, usage_point_id): + self, date_end, date_start, type_curve, usage_point_id + ): message = str() message += "PRM " + usage_point_id.name + "\n" message += "Appel API ...\n" curves_data = self._get_definitive_load_curves( - self.name, date_end, date_start, type_curve, - usage_point_id.name, self.client_id, self.secret_id) + self.name, + date_end, + date_start, + type_curve, + usage_point_id.name, + self.client_id, + self.secret_id, + ) message += "Appel API terminé. Traitement des données ...\n" curves = curves_data.get("curves") diff --git a/wizards/acc_operation_wizard.py b/wizards/acc_operation_wizard.py index f6b966f4f8d9e2a0b22970bfae703e653dcb722a..8a6c5716a43150df4e98e714f8d9d4d81413f520 100644 --- a/wizards/acc_operation_wizard.py +++ b/wizards/acc_operation_wizard.py @@ -13,11 +13,16 @@ class AccOperationWizard(models.TransientModel): # Fields declaration # ------------------------------------------------------ def _default_operation_id(self): - op = self.env['acc.operation'].browse(self.env.context.get('active_ids')[0] if self.env.context.get('active_ids') else []) + op = self.env["acc.operation"].browse( + self.env.context.get("active_ids")[0] + if self.env.context.get("active_ids") + else [] + ) return op operation_id = fields.Many2one( - "acc.operation", default=lambda self: self._default_operation_id()) + "acc.operation", default=lambda self: self._default_operation_id() + ) date_start = fields.Date("Date de début") date_end = fields.Date("Date de fin") prm_cons_ids = fields.Many2many( @@ -26,14 +31,16 @@ class AccOperationWizard(models.TransientModel): column1="cons_id", column2="op_id", domain=[("is_delivery", "=", True)], - string="PRM de soutirage") + string="PRM de soutirage", + ) prm_prod_ids = fields.Many2many( "acc.counter", relation="acc_counter_prod_rel", column1="prod_id", column2="op_id", domain=[("is_injection", "=", True)], - string="PRM d'injection") + string="PRM d'injection", + ) # ------------------------------------------------------ # SQL Constraints @@ -66,7 +73,7 @@ class AccOperationWizard(models.TransientModel): if (self.date_end - self.date_start).days > 31: raise UserError(_("L'intervalle de temps ne doit pas dépasser 31 Jours")) - if (self.date_end <= self.date_start): + if self.date_end <= self.date_start: raise UserError(_("La date de fin doit être supérieure à la date de début")) self.operation_id.curves( diff --git a/wizards/acc_operation_wizard_views.xml b/wizards/acc_operation_wizard_views.xml index f9e9c4bbf24657a9f40b7a01feecf89d13bf8059..d94ddbc7840f545c6fe75c4b567fb1740df542c8 100644 --- a/wizards/acc_operation_wizard_views.xml +++ b/wizards/acc_operation_wizard_views.xml @@ -7,7 +7,7 @@ <field name="arch" type="xml"> <form> <group> - <field name="operation_id" invisible="1"/> + <field name="operation_id" invisible="1" /> <field name="prm_cons_ids" widget="many2many_tags" @@ -32,12 +32,12 @@ string="Récupérer" type="object" /> - <button - class="btn btn-sm btn-primary" - name="get_curves_all" - string="Récupérer depuis le début" - type="object" - /> +<!-- <button--> +<!-- class="btn btn-sm btn-primary"--> +<!-- name="get_curves_all"--> +<!-- string="Récupérer depuis le début"--> +<!-- type="object"--> +<!-- />--> <button class="btn btn-sm btn-default" special="cancel"