diff --git a/models/acc_operation.py b/models/acc_operation.py index 7b6574c38d48c49fca3a23a0a1bf94680c20a60c..01557f9ac51ad238e81c81082a06579ab6766012 100644 --- a/models/acc_operation.py +++ b/models/acc_operation.py @@ -3,6 +3,7 @@ import base64 from datetime import datetime, timedelta, timezone +from dateutil.relativedelta import relativedelta from io import StringIO import pandas as pd @@ -134,6 +135,25 @@ class AccOperation(models.Model): # reader = pd.read_csv(file_decode, header=None, delimiter=';') reader = pd.read_csv(file_decode, header=None, delimiter=";") + # Suppression des données avant import + date_begin_str = data_filename[1] + date_end_str = data_filename[2] + date_format = "%d%m%Y" + date_begin_obj = datetime.strptime(date_begin_str, date_format) + date_end_obj = datetime.strptime( + date_end_str, date_format + ) + relativedelta(days=1) + domain_all = [ + ("date_slot", ">=", date_begin_obj), + ("date_slot", "<", date_end_obj), + ("acc_operation_id", "=", operation.id), + ("comp_data_type", "=", computed_data_type), + ("acc_counter_id", "=", counter_id.id), + ] + rec_ids = self.env["acc.enedis.cdc"].search(domain_all) + if rec_ids: + rec_ids.unlink() + if data_filename[4] == "CDC.csv": # Create Data for the CDC for row in reader.values: @@ -151,45 +171,31 @@ class AccOperation(models.Model): timezone.utc ).replace(tzinfo=None) - # Begin Check doublon - domain_all = [ - ("date_slot", "=", slot_datetime_tz), - ("acc_operation_id", "=", self.id), - ("comp_data_type", "=", computed_data_type), - ("acc_counter_id", "=", counter_id.id) - ] - - acc_enedis_cdc_id = self.env["acc.enedis.cdc"].search( - domain_all) - # End check doublon - - if not acc_enedis_cdc_id: - - self.env["acc.enedis.cdc"].create( - { - "name": file.name, - "acc_operation_id": self.id, - "acc_counter_id": counter_id.id or False, - "comp_data_type": computed_data_type, - "power": row[1], - "date_slot": slot_datetime_tz, - "date_slot_utc": date_slot_utc, - } - ) - # Create 2nd slot 30-60min - self.env["acc.enedis.cdc"].create( - { - "name": file.name, - "acc_operation_id": self.id, - "acc_counter_id": counter_id.id or False, - "comp_data_type": computed_data_type, - "power": row[2], - "date_slot": slot_datetime_tz - + timedelta(minutes=30), - "date_slot_utc": date_slot_utc - + timedelta(minutes=30), - } - ) + self.env["acc.enedis.cdc"].create( + { + "name": file.name, + "acc_operation_id": self.id, + "acc_counter_id": counter_id.id or False, + "comp_data_type": computed_data_type, + "power": row[1], + "date_slot": slot_datetime_tz, + "date_slot_utc": date_slot_utc, + } + ) + # Create 2nd slot 30-60min + self.env["acc.enedis.cdc"].create( + { + "name": file.name, + "acc_operation_id": self.id, + "acc_counter_id": counter_id.id or False, + "comp_data_type": computed_data_type, + "power": row[2], + "date_slot": slot_datetime_tz + + timedelta(minutes=30), + "date_slot_utc": date_slot_utc + + timedelta(minutes=30), + } + ) # Logs information logs self.env["acc.enedis.import.logs"].create(