Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
O
oacc_portal_overview_cdc
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_portal_overview_cdc
Validations
5bed6d78
Valider
5bed6d78
rédigé
Il y a 1 an
par
Rémi - Le Filament
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
[UPD] new function to retrieve curves from ORM
parent
36f3c125
Branches
Branches contenant la validation
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_enedis_cdc.py
+126
-7
126 ajouts, 7 suppressions
models/acc_enedis_cdc.py
avec
126 ajouts
et
7 suppressions
models/acc_enedis_cdc.py
+
126
−
7
Voir le fichier @
5bed6d78
...
@@ -4,10 +4,9 @@ from datetime import datetime
...
@@ -4,10 +4,9 @@ from datetime import datetime
from
dateutil.relativedelta
import
relativedelta
from
dateutil.relativedelta
import
relativedelta
from
odoo
import
_
,
api
,
fields
,
models
from
odoo
import
_
,
api
,
models
from
odoo.exceptions
import
ValidationError
from
odoo.exceptions
import
ValidationError
from
odoo.osv
import
expression
from
odoo.osv
import
expression
from
odoo.tools
import
date_utils
from
odoo.addons.api_connector.tools.date_utils
import
local_to_utc
from
odoo.addons.api_connector.tools.date_utils
import
local_to_utc
...
@@ -49,6 +48,129 @@ class AccEnedisCdc(models.Model):
...
@@ -49,6 +48,129 @@ class AccEnedisCdc(models.Model):
return
display_hourly_curves
,
step
,
step_display_curve
return
display_hourly_curves
,
step
,
step_display_curve
@api.model
def
_read_group_process_groupby
(
self
,
gb
,
query
):
"""
Overrides models method to avoid getting wrong display format
And manage granluarity =
"
minute
"
for 30 minutes curves
"""
initial_gb
=
gb
if
self
.
_context
.
get
(
"
portal_acc_curves
"
)
and
gb
==
"
date_slot:minute
"
:
gb
=
"
date_slot:hour
"
res
=
super
().
_read_group_process_groupby
(
gb
,
query
)
if
self
.
_context
.
get
(
"
portal_acc_curves
"
):
if
res
[
"
type
"
]
==
"
datetime
"
:
res
[
"
display_format
"
]
=
"
dd/MM/YYYY HH:mm
"
if
initial_gb
==
"
date_slot:minute
"
:
res
[
"
groupby
"
]
=
res
[
"
groupby
"
].
replace
(
"
hour
"
,
"
minute
"
)
res
[
"
interval
"
]
=
relativedelta
(
minutes
=
30
)
res
[
"
granularity
"
]
=
res
[
"
granularity
"
].
replace
(
"
hour
"
,
"
minute
"
)
res
[
"
qualified_field
"
]
=
res
[
"
qualified_field
"
].
replace
(
"
hour
"
,
"
minute
"
)
return
res
@api.model
def
_get_curves
(
self
,
operation_id
,
slot_type
,
start_date
,
end_date
,
prm_id
=
None
,
partner_id
=
None
,
curve_types
=
None
,
extra_curve_type
=
None
,
):
"""
Fonction permettant de récupérer les courbes de charge pour graphique ou export
:param: int operation_id: opération concernée
char slot_type: type de slot pour la query (
"
minute
"
,
"
hour
"
,
"
month
"
ou
"
year
"
)
datetime start_date: date début
datetime end_date: date de fin
int prm_id : PRM de soutirage à récupérer
int partner_id: contact associé à la courbe
[char] curve_types: type de données
char extra_curve_type : extra curve to be retrieved (optional)
(allowed values :
'
cons
'
,
'
autocons
'
,
'
prod
'
,
'
surplus
'
)
@returns: liste de dictionnaires resultat de la requête :
- 1 entrée par date
- 1 champ par type de courbe
"""
start_date_tz
=
local_to_utc
(
start_date
,
"
Europe/Paris
"
)
end_date_tz
=
local_to_utc
(
end_date
,
"
Europe/Paris
"
)
domain
=
[
(
"
acc_operation_id
"
,
"
=
"
,
operation_id
),
(
"
date_slot
"
,
"
>=
"
,
start_date_tz
),
(
"
date_slot
"
,
"
<
"
,
end_date_tz
),
]
if
partner_id
and
isinstance
(
partner_id
,
int
):
partner_domain
=
[(
"
partner_id
"
,
"
=
"
,
partner_id
)]
if
prm_id
and
isinstance
(
prm_id
,
int
):
partner_domain
=
expression
.
AND
(
[
partner_domain
,
[(
"
acc_counter_id
"
,
"
=
"
,
prm_id
)]]
)
if
extra_curve_type
and
extra_curve_type
in
(
"
cons
"
,
"
autocons
"
,
"
prod
"
,
"
surplus
"
,
):
partner_domain
=
expression
.
OR
(
[
partner_domain
,
[(
"
comp_data_type
"
,
"
=
"
,
extra_curve_type
)]]
)
else
:
partner_domain
=
[(
"
partner_id
"
,
"
!=
"
,
False
)]
domain
=
expression
.
AND
([
domain
,
partner_domain
])
if
curve_types
:
domain
=
expression
.
AND
([
domain
,
[(
"
comp_data_type
"
,
"
in
"
,
curve_types
)]])
res
=
(
self
.
env
[
"
acc.enedis.cdc
"
]
.
with_context
(
fill_temporal
=
True
,
tz
=
"
Europe/Paris
"
,
portal_acc_curves
=
True
)
.
read_group
(
domain
,
[
"
date_slot
"
,
"
power:sum
"
],
[
"
date_slot:
"
+
slot_type
,
"
comp_data_type
"
],
lazy
=
False
,
)
)
final_res
=
[]
prev_final_line
=
{}
for
line
in
res
:
if
(
prev_final_line
and
prev_final_line
[
"
date
"
]
==
line
[
"
date_slot:
"
+
slot_type
]
):
prev_final_line
.
update
(
{
line
[
"
comp_data_type
"
]:
line
[
"
power
"
]
/
2
/
1000
,
}
)
else
:
new_line
=
{
"
date
"
:
line
[
"
date_slot:
"
+
slot_type
],
line
[
"
comp_data_type
"
]:
line
[
"
power
"
]
/
2
/
1000
,
}
final_res
.
append
(
new_line
)
prev_final_line
=
new_line
# Add computed values
for
final_line
in
final_res
:
if
not
curve_types
or
all
(
value
in
curve_types
for
value
in
[
"
autoprod
"
,
"
prod
"
,
"
surplus
"
]
):
final_line
.
update
(
{
"
autoprod
"
:
final_line
[
"
prod
"
]
-
final_line
[
"
surplus
"
]}
)
if
not
curve_types
or
all
(
value
in
curve_types
for
value
in
[
"
allocons
"
,
"
cons
"
,
"
autocons
"
]
):
final_line
.
update
(
{
"
allocons
"
:
final_line
[
"
cons
"
]
-
final_line
[
"
autocons
"
]}
)
return
final_res
@api.model
@api.model
def
_select_clause
(
self
,
date_slot
,
curve_types
):
def
_select_clause
(
self
,
date_slot
,
curve_types
):
"""
"""
...
@@ -122,9 +244,8 @@ class AccEnedisCdc(models.Model):
...
@@ -122,9 +244,8 @@ class AccEnedisCdc(models.Model):
date start_date : first date to be retrieved
date start_date : first date to be retrieved
date end_date : last date to be retrieved
date end_date : last date to be retrieved
int prm_id : id of PRM to be retrieved (optional)
int prm_id : id of PRM to be retrieved (optional)
[char] extra_curve_type : extra curve to be retrieved (optional)
char extra_curve_type : extra curve to be retrieved (optional)
(allowed values :
'
cons
'
,
'
autocons
'
,
'
allocons
'
,
(allowed values :
'
cons
'
,
'
autocons
'
,
'
prod
'
,
'
surplus
'
)
'
prod
'
,
'
surplus
'
,
'
autoprod
'
)
int partner_id : id of partner to be retrieved (optional)
int partner_id : id of partner to be retrieved (optional)
"""
"""
if
(
if
(
...
@@ -151,10 +272,8 @@ class AccEnedisCdc(models.Model):
...
@@ -151,10 +272,8 @@ class AccEnedisCdc(models.Model):
if
extra_curve_type
and
extra_curve_type
in
(
if
extra_curve_type
and
extra_curve_type
in
(
"
cons
"
,
"
cons
"
,
"
autocons
"
,
"
autocons
"
,
"
allocons
"
,
"
prod
"
,
"
prod
"
,
"
surplus
"
,
"
surplus
"
,
"
autoprod
"
,
):
):
result
=
f
"
{
result
}
OR cdc.comp_data_type =
'
{
extra_curve_type
}
'
)
"
result
=
f
"
{
result
}
OR cdc.comp_data_type =
'
{
extra_curve_type
}
'
)
"
else
:
else
:
...
...
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