Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
O
oacc_perimeter_api
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse du dépôt
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Le Filament
Opération Auto-Consommation Collective
oacc_perimeter_api
Validations
a14d7284
Valider
a14d7284
rédigé
15 janv. 2024
par
Rémi - Le Filament
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
[UPD] documentation, get UTC datetime from dates, compute partner on cdc
parent
5ff89b93
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
models/acc_operation.py
+30
-19
30 ajouts, 19 suppressions
models/acc_operation.py
avec
30 ajouts
et
19 suppressions
models/acc_operation.py
+
30
−
19
Voir le fichier @
a14d7284
...
...
@@ -85,9 +85,15 @@ class AccOperation(models.Model):
self
,
start_date
,
end_date
,
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
- date de début opération
Vérifie les périodes, crée un log et appelle les courbes de conso / prod
à partir de l
'
API Enedis (cet appel passe par un job queue)
:param date start_date : date de début à récupérer (incluse)
:param date end_date : date de fin à récupérer (exclue)
:param recordset usage_point_cons_ids : liste de PRMs de soutirage à récupérer
:param recordset usage_point_prod_ids : liste de PRMs d
'
injection à récupérer
Les PRMs sont optionnels,
si non renseignés, tous les PRMs liés à l
'
opération seront récupérés
"""
self
.
_check_access_api
()
# TODO: Update to get curves only for existing periods
...
...
@@ -245,13 +251,24 @@ class AccOperation(models.Model):
def
get_definitive_load_curves
(
self
,
start_date
,
end_date
,
usage_point_id
,
type_prm
):
"""
Appelle les courbes de conso / prod à partir de l
'
API Enedis
:param date start_date : date de début à récupérer (incluse)
:param date end_date : date de fin à récupérer (exclue)
:param record usage_point_id : PRM à récupérer
:param char type_prm : type de PRM à récupérer (
"
cons
"
ou
"
prod
"
)
"""
message
=
""
message
+=
"
PRM
"
+
usage_point_id
.
name
+
"
\n
"
message
+=
"
Appel API ...
\n
"
# Transformation des dates naives en datetime UTC
start_datetime
=
pytz
.
timezone
(
"
Europe/Paris
"
).
localize
(
fields
.
Datetime
.
to_datetime
(
start_date
)).
astimezone
(
pytz
.
UTC
).
replace
(
tzinfo
=
None
)
end_datetime
=
pytz
.
timezone
(
"
Europe/Paris
"
).
localize
(
fields
.
Datetime
.
to_datetime
(
start_date
)).
astimezone
(
pytz
.
UTC
).
replace
(
tzinfo
=
None
)
curves_data
=
self
.
_get_definitive_load_curves
(
self
.
name
,
start_date
,
end_date
,
start_date
time
,
end_date
time
,
usage_point_id
.
name
,
self
.
client_id
,
self
.
secret_id
,
...
...
@@ -268,15 +285,6 @@ class AccOperation(models.Model):
for
point
in
curve
[
"
interval_reading
"
]:
date_slot
=
datetime
.
strptime
(
point
[
"
timestamp
"
],
"
%Y-%m-%dT%H:%M:%SZ
"
)
slot_datetime_tz
=
datetime
.
strftime
(
date_slot
,
"
%Y-%m-%d %H:%M:%S
"
)
slot_date_tz
=
datetime
.
fromisoformat
(
slot_datetime_tz
).
replace
(
tzinfo
=
tz
.
gettz
(
"
Europe/Paris
"
)
)
date_slot_utc
=
slot_date_tz
.
astimezone
(
timezone
.
utc
).
replace
(
tzinfo
=
None
)
self
.
env
[
"
acc.enedis.cdc
"
].
create
(
{
"
name
"
:
name
,
...
...
@@ -285,9 +293,15 @@ class AccOperation(models.Model):
"
comp_data_type
"
:
type_curve
,
"
power
"
:
point
[
"
value
"
],
"
date_slot
"
:
date_slot
,
"
date_slot_utc
"
:
date_slot_utc
,
}
)
# Update partner_id for retrieved cdc
domain
=
[
(
"
acc_operation_id
"
,
"
=
"
,
self
.
id
),
(
"
acc_counter_id
"
,
"
=
"
,
usage_point_id
.
id
or
False
),
(
"
type_prm
"
,
"
=
"
,
"
delivery
"
if
type_prm
==
"
cons
"
else
"
injection
"
)
]
self
.
env
[
"
acc.counter.period
"
].
_get_periods_from_interval
(
domain
,
start_date
,
end_date
).
_update_cdc_partner_id
()
message
+=
"
Fin du traitement des données
\n
"
_logger
.
info
(
message
)
return
message
...
...
@@ -299,7 +313,6 @@ class AccOperation(models.Model):
de mois entre la date de début de contrat et la date du jour. Puis
récupération des données de tous les mois
"""
# TODO: Update to get curves only for existing periods
nb_months
=
(
date
.
today
().
year
-
self
.
date_start_contract
.
year
)
*
12
+
(
date
.
today
().
month
-
self
.
date_start_contract
.
month
)
...
...
@@ -307,14 +320,12 @@ class AccOperation(models.Model):
start_date_it
=
self
.
date_start_contract
end_date_it
=
self
.
date_start_contract
+
relativedelta
(
months
=
1
)
i
=
1
while
i
<
nb_months
:
for
i
in
range
(
nb_months
):
self
.
curves
(
start_date_it
,
end_date_it
,
usage_point_cons_ids
,
usage_point_prod_ids
)
start_date_it
=
start_date_it
+
relativedelta
(
months
=
1
)
end_date_it
=
start_date_it
+
relativedelta
(
months
=
1
)
i
+=
1
def
perimeter
(
self
):
"""
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter