diff --git a/__manifest__.py b/__manifest__.py index 0803a59de65c7a8ba3ab764d0a32112ba3a8acc1..7ea573fe62e14f65c0c3723e6d49d97d93287721 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -5,7 +5,7 @@ "website": "https://le-filament.com", "version": "16.0.1.0.0", "license": "AGPL-3", - "depends": ["oacc", "api_enedis_acc"], + "depends": ["oacc", "api_enedis_acc", "queue_job"], "data": [ "security/ir.model.access.csv", # datas diff --git a/tools/key_file.py b/tools/key_file.py index 7f48d85d94c60379700dda9b1d50f0f5689b95ee..70d324149a61addbaa48c8dbf3f8b1ca30f2fb3d 100644 --- a/tools/key_file.py +++ b/tools/key_file.py @@ -66,7 +66,7 @@ class RepartitionKeyEntryFile: ) return json - def data_to_send(self, agreement_id, send_empty_key=True): + def data_to_send(self, send_empty_key=True): """ build route and body for api sending return dict {"route", "body} to enedis @@ -74,17 +74,18 @@ class RepartitionKeyEntryFile: call_list = [] for horo in self.json: date = datetime.strptime(horo, "%d-%m-%Y %H:%M") - route = f"{agreement_id}/repartition_keys/{date.strftime('%Y%m%dT%H%MZ')}" + route = f"/repartition_keys/{date.strftime('%Y%m%dT%H%M%SZ')}" body = [] - # specification enedis si la somme des clefs est nulle on envoi un body vide - if self._get_key_sum(self.json.get(horo)) > 0: - for keys in self.json.get(horo): - if send_empty_key: - body.append(keys) - else: - if float(keys.get("key")) > 0: - body.append(keys) - call_list.append({"route": route, "body": body}) + for key in self.json.get(horo): + if send_empty_key: + body.append(key) + else: + if float(key.get("key")) > 0: + body.append(key) + + if send_empty_key or body: + call_list.append({"route": route, "body": body}) + return call_list def _check_counter(self): diff --git a/wizard/acc_repartition_keys_wizard.py b/wizard/acc_repartition_keys_wizard.py index caa0f41ede6813b97bc09f72080be1893a8a82e3..4758365af03bbd51e95f98ccfe7b1dbe40d8e097 100644 --- a/wizard/acc_repartition_keys_wizard.py +++ b/wizard/acc_repartition_keys_wizard.py @@ -4,7 +4,7 @@ import base64 import datetime from odoo import fields, models -from odoo.exceptions import UserError +from odoo.exceptions import UserError, ValidationError from ..tools.key_file import RepartitionKeyEntryFile @@ -83,14 +83,14 @@ class AccRepartitionKeysWizard(models.TransientModel): if not file_check_result.get("check"): raise UserError(file_check_result.get("message")) - data_to_send = entry_file_handler.data_to_send( - agreement_id=self.operation_id.name - ) + data_to_send = entry_file_handler.data_to_send(send_empty_key=False) for key in data_to_send: - response = self.env["api.enedis.acc"].send_repartition_key(key=key) - # TODO: test api - print(response) + job_description = f"Send repartition key at {key.get('route')}" + try: + self.operation_id.with_delay(description=job_description).send_repartition_key(key=key) + except ValidationError as exc: + raise UserError(str(exc)) self.env["acc.repartition.keys"].create( {