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

[add] check if counter is in period before launch key

parent 892f7733
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!17[add] check if counter is in period before launch key
......@@ -25,6 +25,7 @@ def get_algo_description(algo):
return desc.get(algo, f"Pas de descritpion associée a {algo}")
class AccOperation(models.Model):
_inherit = ["acc.operation"]
......@@ -168,18 +169,19 @@ class AccOperation(models.Model):
@api.onchange("type_algo")
def on_change_algo(self):
self.algo_description = get_algo_description(self.type_algo)
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
def write(self, vals):
if vals.get("type_algo"):
vals.update({'algo_description': get_algo_description(vals.get("type_algo"))})
vals.update(
{"algo_description": get_algo_description(vals.get("type_algo"))}
)
res = super().write(vals)
return res
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
......@@ -219,6 +221,8 @@ class AccOperation(models.Model):
horodatages = list(OrderedDict.fromkeys(keys))
counter_period = self.get_counter_by_period_day(date_list=horodatages)
for time_slot in horodatages:
keys = self.env["acc.repartition.counter"].search(
[
......@@ -228,8 +232,14 @@ class AccOperation(models.Model):
)
body = []
for key in keys:
if key.acc_counter_id.name in counter_period.get(
time_slot.replace(hour=0, minute=0, second=0)
):
body.append({"id": key.acc_counter_id.name, "key": key.weight})
if body:
data = {"timestamp": time_slot.strftime("%Y%m%dT%H%M%SZ"), "body": body}
job_description = (
f"{self.name} - Send repartition key at {data.get('timestamp')}"
)
......@@ -340,3 +350,34 @@ class AccOperation(models.Model):
}
)
def get_counter_by_period_day(self, date_list):
"""
return counter in period for simple day
{
day1 : [counter...],
day2 : [counter...],
}
"""
counter_period = {}
res = [
datetime.strptime(d, "%d-%m-%y")
for d in list(
OrderedDict.fromkeys(
[h.strftime("%d-%m-%y") for h in date_list]
)
)
]
for date in res:
counter_period[date] = (
self.env["acc.counter.period"]
._get_periods_from_date(
[
("acc_operation_id", "=", self.id),
("prm_type", "=", "delivery"),
],
date,
)
.mapped("acc_counter_id.name")
)
return counter_period
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