Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
A
acc_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
Ce projet est archivé. Le dépôt et les autres ressources du projet sont en lecture seule.
Afficher davantage de fils d'Ariane
Le Filament
Opération Auto-Consommation Collective
acc_cdc
Validations
e02fd603
Valider
e02fd603
rédigé
Il y a 3 ans
par
Juliana
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Rebuild function
parent
ca5d0fda
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/enercoop_operation.py
+148
-43
148 ajouts, 43 suppressions
models/enercoop_operation.py
avec
148 ajouts
et
43 suppressions
models/enercoop_operation.py
+
148
−
43
Voir le fichier @
e02fd603
...
@@ -240,6 +240,50 @@ class EnercoopOperation(models.Model):
...
@@ -240,6 +240,50 @@ class EnercoopOperation(models.Model):
}
}
return
cdc_jour
return
cdc_jour
def
get_cdc_by_query_histo_cons
(
self
,
slot_type
,
date_start
,
date_end
,
prm_ids
=
None
):
"""
Fonction permettant de récupérer les données pour la
construction des chart pour une ou des opérations données pour les consommateurs
:param slot_type: type de slot pour la query (
'
month
'
ou
'
hour
'
ou
'
year
'
)
date_start: date début
date_end: date de fin
:return: un dictionnaire de données
(labels et data pour les charts à afficher)
"""
label_histo
=
[]
data_autocons_histo
=
[]
data_allocons_histo
=
[]
query
=
"""
SELECT
date_trunc(%s, A.date_slot) AS date_slot,
(SUM( (CASE WHEN comp_data_type =
'
autocons
'
THEN A.power ELSE 0 END) )/2) / 1000 as autocons,
((SUM( (CASE WHEN comp_data_type =
'
cons
'
THEN A.power ELSE 0 END)) - SUM(CASE WHEN comp_data_type =
'
autocons
'
THEN A.power ELSE 0 END) ) / 2) / 1000 as allocons
FROM enercoop_enedis_cdc A
JOIN enercoop_operation E ON E.id = A.enercoop_operation_id
WHERE A.enercoop_operation_id IS NOT NULL
AND A.enercoop_operation_id IN %s
AND A.enercoop_counter_id IN %s
AND A.date_slot >= %s
AND A.date_slot < %s
GROUP BY date_trunc(%s, A.date_slot)
ORDER BY date_slot ASC;
"""
query_params
=
(
slot_type
,
tuple
(
self
.
ids
),
tuple
(
prm_ids
.
ids
),
date_start
,
date_end
,
slot_type
)
self
.
env
.
cr
.
execute
(
query
,
query_params
)
raw_data
=
self
.
env
.
cr
.
fetchall
()
for
row
in
raw_data
:
data_autocons_histo
.
append
(
int
(
row
[
1
]))
data_allocons_histo
.
append
(
int
(
row
[
2
]))
label_histo
.
append
(
row
[
0
])
cdc_jour
=
{
'
autocons_histo
'
:
data_autocons_histo
,
'
allocons_histo
'
:
data_allocons_histo
,
'
label_histo
'
:
label_histo
,
}
return
cdc_jour
def
get_cdc_by_query_prod
(
self
,
slot_type
,
date_start
,
date_end
,
prm_ids
=
None
):
def
get_cdc_by_query_prod
(
self
,
slot_type
,
date_start
,
date_end
,
prm_ids
=
None
):
"""
"""
Fonction permettant de récupérer les données pour la
Fonction permettant de récupérer les données pour la
...
@@ -463,7 +507,7 @@ class EnercoopOperation(models.Model):
...
@@ -463,7 +507,7 @@ class EnercoopOperation(models.Model):
data_autocons_histo
.
append
(
int
(
row
[
1
]))
data_autocons_histo
.
append
(
int
(
row
[
1
]))
data_surplus_histo
.
append
(
int
(
row
[
2
]))
data_surplus_histo
.
append
(
int
(
row
[
2
]))
data_allocons_histo
.
append
(
int
(
row
[
3
]))
data_allocons_histo
.
append
(
int
(
row
[
3
]))
data_a
ll
ocons_histo
.
append
(
int
(
row
[
3
]))
data_a
ut
ocons_
prod_
histo
.
append
(
int
(
row
[
4
]))
label_histo
.
append
(
row
[
0
])
label_histo
.
append
(
row
[
0
])
cdc_jour
=
{
cdc_jour
=
{
...
@@ -940,10 +984,51 @@ class EnercoopOperation(models.Model):
...
@@ -940,10 +984,51 @@ class EnercoopOperation(models.Model):
})
})
return
result_graph
return
result_graph
# ------------------------------------------------------
# ------------------------------------------------------
# Functions to manage route
# Functions to manage route
# ------------------------------------------------------
# ------------------------------------------------------
def
graph_view_conso
(
self
,
scale
=
None
,
date_start
=
None
,
date_end
=
None
,
prm_id
=
None
,
partner_id
=
None
):
def
build_graph_data_options
(
self
,
chart_data
,
step_display_courbe
=
None
,
scale
=
None
,
step_courbe
=
None
):
result_graph
=
{}
result_graph_line
=
self
.
chart_data_line_prod
(
chart_data
,
step_display_courbe
)
result_graph
.
update
(
result_graph_line
)
result_graph_histo
=
self
.
chart_data_histo_prod
(
chart_data
,
step_display_courbe
,
scale
)
result_graph
.
update
(
result_graph_histo
)
result_graph_donuts
=
self
.
chart_data_donuts_prod
(
chart_data
,
step_courbe
)
result_graph
.
update
(
result_graph_donuts
)
result_graph_line
=
self
.
chart_data_line_cons
(
chart_data
,
step_display_courbe
)
result_graph
.
update
(
result_graph_line
)
result_graph_histo
=
self
.
chart_data_histo_cons
(
chart_data
,
step_display_courbe
,
scale
)
result_graph
.
update
(
result_graph_histo
)
result_graph_donuts
=
self
.
chart_data_donuts_cons
(
chart_data
,
step_courbe
)
result_graph
.
update
(
result_graph_donuts
)
return
result_graph
def
build_graph_data_options_prod
(
self
,
chart_data
,
step_display_courbe
=
None
,
scale
=
None
,
step_courbe
=
None
):
result_graph
=
{}
result_graph_line
=
self
.
chart_data_line_prod
(
chart_data
,
step_display_courbe
)
result_graph
.
update
(
result_graph_line
)
result_graph_histo
=
self
.
chart_data_histo_prod
(
chart_data
,
step_display_courbe
,
scale
)
result_graph
.
update
(
result_graph_histo
)
result_graph_donuts
=
self
.
chart_data_donuts_prod
(
chart_data
,
step_courbe
)
result_graph
.
update
(
result_graph_donuts
)
return
result_graph
def
build_graph_data_options_cons
(
self
,
chart_data
,
step_display_courbe
=
None
,
scale
=
None
,
step_courbe
=
None
):
result_graph
=
{}
result_graph_line
=
self
.
chart_data_line_cons
(
chart_data
,
step_display_courbe
)
result_graph
.
update
(
result_graph_line
)
result_graph_histo
=
self
.
chart_data_histo_cons
(
chart_data
,
step_display_courbe
,
scale
)
result_graph
.
update
(
result_graph_histo
)
result_graph_donuts
=
self
.
chart_data_donuts_cons
(
chart_data
,
step_courbe
)
result_graph
.
update
(
result_graph_donuts
)
return
result_graph
# ------------------------------------------------------
# Functions to manage route
# ------------------------------------------------------
def
graph_view_global
(
self
,
scale
=
None
,
date_start
=
None
,
date_end
=
None
):
"""
"""
Fonction appelée pour l
'
affichage des courbes consommation
Fonction appelée pour l
'
affichage des courbes consommation
sur le portail
sur le portail
...
@@ -957,31 +1042,16 @@ class EnercoopOperation(models.Model):
...
@@ -957,31 +1042,16 @@ class EnercoopOperation(models.Model):
if
not
date_start
and
not
date_end
:
if
not
date_start
and
not
date_end
:
date_start
,
date_end
=
self
.
get_last_day
(
scale
)
date_start
,
date_end
=
self
.
get_last_day
(
scale
)
# Get the step to display courbe in chart
counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
([(
'
enercoop_operation_ids
'
,
'
in
'
,
self
.
enercoop_delivery_operation_ids
.
ids
)]).
ids
step_courbe
,
step_display_courbe
=
self
.
get_step_from_date
(
date_start
=
date_start
,
date_end
=
date_end
)
# New code implementation
step_courbe
,
step_display_courbe
=
self
.
get_step_from_date
(
date_start
=
date_start
,
date_end
=
date_end
)
# enercoop_counter_ids = self.env['enercoop.counter'].browse(prm_id) if prm_id else None
# Get the data to display in chart
if
prm_id
:
chart_data
=
self
.
get_cdc
(
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
browse
(
prm_id
)
scale
=
scale
,
step_courbe
=
step_courbe
,
date_start
=
date_start
,
elif
partner_id
:
date_end
=
date_end
,
prm_ids
=
counter_ids
)
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
([(
'
partner_id
'
,
'
=
'
,
partner_id
)])
else
:
# enercoop_counter_op_ids = self.enercoop_injection_operation_ids
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
([(
'
enercoop_operation_ids
'
,
'
in
'
,
self
.
enercoop_delivery_operation_ids
.
ids
)])
chart_data
=
self
.
get_cdc_by_query_cons
(
step_courbe
,
date_start
,
date_end
,
enercoop_counter_ids
)
if
scale
==
'
week
'
:
chart_data_histo
=
self
.
get_cdc_by_query_histo
(
'
day
'
,
date_start
,
date_end
,
enercoop_counter_ids
)
chart_data
.
update
(
chart_data_histo
)
# Build the chart with data and options
# Build the chart with data and options
result_graph_line
=
self
.
chart_data_line_cons
(
chart_data
,
step_display_courbe
)
result_graph
=
self
.
build_graph_data_options
(
chart_data
,
step_display_courbe
=
step_display_courbe
,
scale
=
scale
,
step_courbe
=
step_courbe
)
result_graph
.
update
(
result_graph_line
)
result_graph_histo
=
self
.
chart_data_histo_cons
(
chart_data
,
step_display_courbe
,
scale
)
result_graph
.
update
(
result_graph_histo
)
result_graph_donuts
=
self
.
chart_data_donuts_cons
(
chart_data
,
step_courbe
)
result_graph
.
update
(
result_graph_donuts
)
date_deb
,
date_max
=
self
.
get_last_day
(
'
day
'
)
date_deb
,
date_max
=
self
.
get_last_day
(
'
day
'
)
date_max
=
date_max
.
strftime
(
"
%d/%m/%Y
"
)
date_max
=
date_max
.
strftime
(
"
%d/%m/%Y
"
)
...
@@ -997,44 +1067,80 @@ class EnercoopOperation(models.Model):
...
@@ -997,44 +1067,80 @@ class EnercoopOperation(models.Model):
})
})
return
result_graph
return
result_graph
def
graph_view_prod
(
self
,
scale
=
None
,
date_start
=
None
,
date_end
=
None
,
prm_id
=
None
,
partner_id
=
None
):
# ------------------------------------------------------
# Functions to manage route
# ------------------------------------------------------
def
get_graph_data
(
self
,
type
=
None
,
scale
=
None
,
date_start
=
None
,
date_end
=
None
,
prm_id
=
None
,
partner_id
=
None
):
if
scale
:
graph_datas
=
self
.
graph_view_type
(
type
,
scale
,
prm_id
,
partner_id
)
elif
date_start
and
date_end
:
graph_datas
=
self
.
graph_view_type
(
type
=
type
,
date_start
=
datetime
.
strptime
(
date_start
,
'
%Y-%m-%d
'
),
date_end
=
datetime
.
strptime
(
date_end
,
'
%Y-%m-%d
'
),
prm_id
=
prm_id
,
partner_id
=
partner_id
)
else
:
graph_datas
=
self
.
graph_view_type
(
type
=
type
,
scale
=
'
week
'
,
prm_id
=
prm_id
,
partner_id
=
partner_id
)
if
prm_id
:
graph_datas
[
'
name
'
]
=
"
PRM n°
"
+
self
.
env
[
'
enercoop.counter
'
].
sudo
().
browse
(
prm_id
).
name
if
partner_id
:
graph_datas
[
'
name
'
]
=
self
.
env
[
'
res.partner
'
].
sudo
().
browse
(
partner_id
).
name
graph_datas
[
'
prm_id
'
]
=
prm_id
graph_datas
[
'
partner_id
'
]
=
partner_id
return
graph_datas
def
graph_view_type
(
self
,
type
=
None
,
scale
=
None
,
date_start
=
None
,
date_end
=
None
,
prm_id
=
None
,
partner_id
=
None
):
"""
"""
Fonction appelée pour l
'
affichage des courbes
produc
tion
Fonction appelée pour l
'
affichage des courbes
consomma
tion
sur le portail
sur le portail
:param scale: type d
'
affichage des graphes
:param scale: type d
'
affichage des graphes
(day/week/month/semestre/year)
(day/week/month/semestre/year)
défini par le clic bouton
défini par le clic bouton
:return: dictionnaire pour la construction des graphes
:return: dictionnaire pour la construction des graphes
"""
"""
result_graph
=
{}
result_graph
=
{}
# Get the step to display courbe in chart
if
scale
:
if
not
date_start
and
not
date_end
:
date_start
,
date_end
=
self
.
get_last_day
(
scale
)
date_start
,
date_end
=
self
.
get_last_day
(
scale
)
# Get the step to display curve in chart
step_courbe
,
step_display_courbe
=
self
.
get_step_from_date
(
date_start
=
date_start
,
date_end
=
date_end
)
step_courbe
,
step_display_courbe
=
self
.
get_step_from_date
(
date_start
=
date_start
,
date_end
=
date_end
)
# New code implementation
# Get PRM ids
# enercoop_counter_ids = self.env['enercoop.counter'].browse(prm_id) if prm_id else None
if
prm_id
:
if
prm_id
:
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
browse
(
prm_id
)
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
browse
(
prm_id
)
elif
partner_id
:
elif
partner_id
:
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
([(
'
partner_id
'
,
'
=
'
,
partner_id
)])
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
([(
'
partner_id
'
,
'
=
'
,
partner_id
)])
else
:
else
:
# enercoop_counter_op_ids = self.enercoop_injection_operation_ids
if
type
==
'
cons
'
:
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
([(
'
enercoop_operation_ids
'
,
'
in
'
,
self
.
enercoop_injection_operation_ids
.
ids
)])
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
(
[(
'
enercoop_operation_ids
'
,
'
in
'
,
self
.
enercoop_delivery_operation_ids
.
ids
)])
else
:
enercoop_counter_ids
=
self
.
env
[
'
enercoop.counter
'
].
search
(
[(
'
enercoop_operation_ids
'
,
'
in
'
,
self
.
enercoop_injection_operation_ids
.
ids
)])
if
type
==
'
cons
'
:
chart_data
=
self
.
get_cdc_by_query_cons
(
step_courbe
,
date_start
,
date_end
,
enercoop_counter_ids
)
if
scale
==
'
week
'
:
chart_data_histo
=
self
.
get_cdc_by_query_histo_cons
(
'
day
'
,
date_start
,
date_end
,
enercoop_counter_ids
)
chart_data
.
update
(
chart_data_histo
)
# Build the chart with data and options
result_graph
=
self
.
build_graph_data_options_cons
(
chart_data
,
step_display_courbe
=
step_display_courbe
,
scale
=
scale
,
step_courbe
=
step_courbe
)
else
:
chart_data
=
self
.
get_cdc_by_query_prod
(
step_courbe
,
date_start
,
date_end
,
enercoop_counter_ids
)
chart_data
=
self
.
get_cdc_by_query_prod
(
step_courbe
,
date_start
,
date_end
,
enercoop_counter_ids
)
if
scale
==
'
week
'
:
if
scale
==
'
week
'
:
chart_data_histo
=
self
.
get_cdc_by_query_histo_prod
(
'
day
'
,
date_start
,
date_end
,
enercoop_counter_ids
)
chart_data_histo
=
self
.
get_cdc_by_query_histo_prod
(
'
day
'
,
date_start
,
date_end
,
enercoop_counter_ids
)
chart_data
.
update
(
chart_data_histo
)
chart_data
.
update
(
chart_data_histo
)
result_graph_line
=
self
.
chart_data_line_prod
(
chart_data
,
step_display_courbe
)
# Build the chart with data and options
result_graph
.
update
(
result_graph_line
)
result_graph
=
self
.
build_graph_data_options_prod
(
chart_data
,
step_display_courbe
=
step_display_courbe
,
result_graph_histo
=
self
.
chart_data_histo_prod
(
chart_data
,
step_display_courbe
,
scale
)
scale
=
scale
,
step_courbe
=
step_courbe
)
result_graph
.
update
(
result_graph_histo
)
result_graph_donuts
=
self
.
chart_data_donuts_prod
(
chart_data
,
step_courbe
)
result_graph
.
update
(
result_graph_donuts
)
date_deb
,
date_max
=
self
.
get_last_day
(
'
day
'
)
date_deb
,
date_max
=
self
.
get_last_day
(
'
day
'
)
date_max
=
date_max
.
strftime
(
"
%d/%m/%Y
"
)
date_max
=
date_max
.
strftime
(
"
%d/%m/%Y
"
)
date_min
=
self
.
get_first_day
()
date_min
=
self
.
get_first_day
()
...
@@ -1047,5 +1153,4 @@ class EnercoopOperation(models.Model):
...
@@ -1047,5 +1153,4 @@ class EnercoopOperation(models.Model):
'
date_max
'
:
date_max
,
'
date_max
'
:
date_max
,
'
scale
'
:
scale
'
scale
'
:
scale
})
})
return
result_graph
return
result_graph
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