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

Merge branch '16.0-admin' of...

Merge branch '16.0-admin' of sources.le-filament.com:lefilament/oacc/oacc_repartition_keys into 16.0-admin
parents ba2e265d f8f50dae
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!9Administration des opérations
# Defaults for all prettier-supported languages.
# Prettier will complete this with settings from .editorconfig file.
bracketSpacing: false
printWidth: 88
proseWrap: always
semi: true
trailingComma: "es5"
xmlWhitespaceSensitivity: "strict"
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
<<<<<<< HEAD
"access_acc_repartition_keys_group_operation_superadmin","acc_repartition_keys group_operation_superadmin","model_acc_repartition_keys","oacc.group_operation_superadmin",1,1,1,0 "access_acc_repartition_keys_group_operation_superadmin","acc_repartition_keys group_operation_superadmin","model_acc_repartition_keys","oacc.group_operation_superadmin",1,1,1,0
"access_acc_repartition_keys_wizard_group_operation_superadmin","acc_repartition_keys_wizard group_operation_superadmin","model_acc_repartition_keys_wizard","oacc.group_operation_superadmin",1,1,1,1 "access_acc_repartition_keys_wizard_group_operation_superadmin","acc_repartition_keys_wizard group_operation_superadmin","model_acc_repartition_keys_wizard","oacc.group_operation_superadmin",1,1,1,1
=======
"access_acc_repartition_keys_group_operation_admin","acc_repartition_keys group_operation_admin","model_acc_repartition_keys","oacc.group_operation_admin",1,1,1,0
"access_acc_repartition_keys_wizard_group_operation_admin","acc_repartition_keys_wizard group_operation_admin","model_acc_repartition_keys_wizard","oacc.group_operation_admin",1,1,1,1
>>>>>>> f8f50dae1c02fa6e972c2873b9ef1d6bf5f0efdc
...@@ -4,6 +4,8 @@ Repartion key entry file handler ...@@ -4,6 +4,8 @@ Repartion key entry file handler
import csv import csv
from datetime import datetime from datetime import datetime
from odoo.addons.api_connector.tools.date_utils import local_to_utc
class RepartitionKeyEntryFile: class RepartitionKeyEntryFile:
def __init__(self, data, file_type="csv"): def __init__(self, data, file_type="csv"):
...@@ -80,7 +82,7 @@ class RepartitionKeyEntryFile: ...@@ -80,7 +82,7 @@ class RepartitionKeyEntryFile:
return max(self.json) return max(self.json)
def data_to_send(self, send_empty_key=True): def data_to_send(self, send_empty_key=True, convert_to_utc=True):
""" """
build route and body for api sending build route and body for api sending
return dict {"route", "body} to enedis return dict {"route", "body} to enedis
...@@ -88,8 +90,11 @@ class RepartitionKeyEntryFile: ...@@ -88,8 +90,11 @@ class RepartitionKeyEntryFile:
call_list = [] call_list = []
for horo in self.json: for horo in self.json:
date = datetime.strptime(horo, "%d-%m-%Y %H:%M") date = datetime.strptime(horo, "%d-%m-%Y %H:%M")
if convert_to_utc:
date = local_to_utc(date, "Europe/Paris")
timestamp = date.strftime("%Y%m%dT%H%M%SZ") timestamp = date.strftime("%Y%m%dT%H%M%SZ")
body = [] body = []
for key in self.json.get(horo): for key in self.json.get(horo):
if send_empty_key: if send_empty_key:
body.append(key) body.append(key)
...@@ -114,7 +119,7 @@ class RepartitionKeyEntryFile: ...@@ -114,7 +119,7 @@ class RepartitionKeyEntryFile:
if len(counter_list_from_file) != len(set(counter_list_from_file)): if len(counter_list_from_file) != len(set(counter_list_from_file)):
return { return {
"check": False, "check": False,
f"message": "Des numéros de PRM apparaissent plusieurs fois" "message": "Des numéros de PRM apparaissent plusieurs fois",
} }
if sorted(self.operation_counter_list) == sorted(counter_list_from_file): if sorted(self.operation_counter_list) == sorted(counter_list_from_file):
...@@ -133,8 +138,8 @@ class RepartitionKeyEntryFile: ...@@ -133,8 +138,8 @@ class RepartitionKeyEntryFile:
if missing_in_file or missing_in_operation: if missing_in_file or missing_in_operation:
return { return {
"check": False, "check": False,
f"message": "Les numéros de PRM ne correspondent " "message": "Les numéros de PRM ne correspondent "
f"pas à ceux de l’opération", "pas à ceux de l’opération",
} }
return {"check": True, "message": ""} return {"check": True, "message": ""}
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
<field name="model">acc.operation</field> <field name="model">acc.operation</field>
<field name="inherit_id" ref="oacc.acc_operation_form_view" /> <field name="inherit_id" ref="oacc.acc_operation_form_view" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//notebook" position="inside"> <page name="other_infos" position="before">
<page string="Clés de répartition" name="keys" groups="oacc.group_operation_superadmin"> <page string="Clés de répartition" name="keys">
<button <button
string="Importer un fichier" string="Importer un fichier"
type="action" type="action"
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
</tree> </tree>
</field> </field>
</page> </page>
</xpath> </page>
</field> </field>
</record> </record>
</odoo> </odoo>
...@@ -72,17 +72,22 @@ class AccRepartitionKeysWizard(models.TransientModel): ...@@ -72,17 +72,22 @@ class AccRepartitionKeysWizard(models.TransientModel):
except (ValueError, IndexError) as exc: except (ValueError, IndexError) as exc:
raise UserError(_("Fichier de répartitions au mauvais format")) from exc raise UserError(_("Fichier de répartitions au mauvais format")) from exc
entry_file_handler.operation_counter_list = self.env[ entry_file_handler.operation_counter_list = (
"acc.counter.period" self.env["acc.counter.period"]
]._get_periods_from_interval( ._get_periods_from_interval(
[("acc_operation_id", "=", self.operation_id.id), ("prm_type", "=", "delivery")], [
("acc_operation_id", "=", self.operation_id.id),
("prm_type", "=", "delivery"),
],
datetime.strptime( datetime.strptime(
entry_file_handler.get_min_date(), "%d-%m-%Y %H:%M" entry_file_handler.get_min_date(), "%d-%m-%Y %H:%M"
).date(), ).date(),
datetime.strptime( datetime.strptime(
entry_file_handler.get_max_date(), "%d-%m-%Y %H:%M" entry_file_handler.get_max_date(), "%d-%m-%Y %H:%M"
).date(), ).date(),
).mapped("acc_counter_id.name") )
.mapped("acc_counter_id.name")
)
try: try:
file_check_result = entry_file_handler.check() file_check_result = entry_file_handler.check()
...@@ -92,7 +97,7 @@ class AccRepartitionKeysWizard(models.TransientModel): ...@@ -92,7 +97,7 @@ class AccRepartitionKeysWizard(models.TransientModel):
if not file_check_result.get("check"): if not file_check_result.get("check"):
raise UserError(_(file_check_result.get("message"))) raise UserError(_(file_check_result.get("message")))
data_to_send = entry_file_handler.data_to_send(send_empty_key=False) data_to_send = entry_file_handler.data_to_send(send_empty_key=True)
for key in data_to_send: for key in data_to_send:
job_description = f"{self.operation_id.name} - Send repartition key at {key.get('timestamp')}" job_description = f"{self.operation_id.name} - Send repartition key at {key.get('timestamp')}"
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
class="btn btn-primary" class="btn btn-primary"
name="send_imported_file" name="send_imported_file"
type="object" type="object"
string="Envoyer a enedis" string="Envoyer a Enedis"
/> />
<button <button
class="btn btn-primary" class="btn btn-primary"
...@@ -25,10 +25,7 @@ ...@@ -25,10 +25,7 @@
</field> </field>
</record> </record>
<record <record id="acc_repartition_keys_wizard_action" model="ir.actions.act_window">
id="acc_repartition_keys_wizard_action"
model="ir.actions.act_window"
>
<field name="name">Création clés de repartition</field> <field name="name">Création clés de repartition</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">acc.repartition.keys.wizard</field> <field name="res_model">acc.repartition.keys.wizard</field>
......
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