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
7a47b4e0
Valider
7a47b4e0
rédigé
Il y a 11 mois
par
Julien - Le Filament
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
[UPD] handle 15 minutes steps in cdc
parent
bf5f513a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion
!5
[UPD] handle 15 minutes steps in cdc
Modifications
2
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
2 fichiers modifiés
models/acc_enedis_cdc.py
+31
-17
31 ajouts, 17 suppressions
models/acc_enedis_cdc.py
tools/export_cdc.py
+28
-14
28 ajouts, 14 suppressions
tools/export_cdc.py
avec
59 ajouts
et
31 suppressions
models/acc_enedis_cdc.py
+
31
−
17
Voir le fichier @
7a47b4e0
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
from
datetime
import
datetime
from
datetime
import
datetime
from
dateutil.relativedelta
import
relativedelta
from
dateutil.relativedelta
import
relativedelta
from
..tools.export_cdc
import
get_divider_from_row
from
odoo
import
_
,
api
,
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
...
@@ -36,10 +36,10 @@ class AccEnedisCdc(models.Model):
...
@@ -36,10 +36,10 @@ class AccEnedisCdc(models.Model):
step_display_curve
=
"
hour
"
step_display_curve
=
"
hour
"
# Calculate delta between 2 dates
# Calculate delta between 2 dates
delta
=
(
end_date
-
start_date
).
days
delta
=
(
end_date
-
start_date
).
days
if
delta
>
1
and
delta
<=
31
:
if
1
<
delta
<=
31
:
step_display_curve
=
"
day
"
step_display_curve
=
"
day
"
display_hourly_curves
=
True
display_hourly_curves
=
True
elif
delta
>
31
and
delta
<=
366
:
elif
31
<
delta
<=
366
:
step
=
"
month
"
step
=
"
month
"
step_display_curve
=
"
month
"
step_display_curve
=
"
month
"
elif
delta
>
366
:
elif
delta
>
366
:
...
@@ -193,7 +193,7 @@ class AccEnedisCdc(models.Model):
...
@@ -193,7 +193,7 @@ class AccEnedisCdc(models.Model):
if
curve_type
in
(
"
cons
"
,
"
autocons
"
,
"
prod
"
,
"
surplus
"
):
if
curve_type
in
(
"
cons
"
,
"
autocons
"
,
"
prod
"
,
"
surplus
"
):
result
+=
f
"""
result
+=
f
"""
, (SUM(CASE WHEN cdc.comp_data_type =
'
{
curve_type
}
'
, (SUM(CASE WHEN cdc.comp_data_type =
'
{
curve_type
}
'
THEN cdc.power ELSE 0 END))
/2 / 1000
as
{
curve_type
}
THEN cdc.power ELSE 0 END)) as
{
curve_type
}
"""
"""
elif
curve_type
==
"
allocons
"
:
elif
curve_type
==
"
allocons
"
:
result
+=
"""
result
+=
"""
...
@@ -202,7 +202,7 @@ class AccEnedisCdc(models.Model):
...
@@ -202,7 +202,7 @@ class AccEnedisCdc(models.Model):
THEN cdc.power ELSE 0 END)
THEN cdc.power ELSE 0 END)
- SUM(CASE
- SUM(CASE
WHEN cdc.comp_data_type =
'
autocons
'
WHEN cdc.comp_data_type =
'
autocons
'
THEN cdc.power ELSE 0 END))
/ 2 / 1000
as allocons
THEN cdc.power ELSE 0 END)) as allocons
"""
"""
elif
curve_type
==
"
autoprod
"
:
elif
curve_type
==
"
autoprod
"
:
result
+=
"""
result
+=
"""
...
@@ -211,8 +211,12 @@ class AccEnedisCdc(models.Model):
...
@@ -211,8 +211,12 @@ class AccEnedisCdc(models.Model):
THEN cdc.power ELSE 0 END)
THEN cdc.power ELSE 0 END)
- SUM(CASE
- SUM(CASE
WHEN cdc.comp_data_type =
'
surplus
'
WHEN cdc.comp_data_type =
'
surplus
'
THEN cdc.power ELSE 0 END)) / 2 / 1000 as autoprod
THEN cdc.power ELSE 0 END)) as autoprod
"""
result
+=
"""
, cdc.timestep as timestep
"""
"""
return
result
return
result
@api.model
@api.model
...
@@ -293,7 +297,8 @@ class AccEnedisCdc(models.Model):
...
@@ -293,7 +297,8 @@ class AccEnedisCdc(models.Model):
raise
ValidationError
(
_
(
"
Incorrect date_slot in GROUP BY section
"
))
raise
ValidationError
(
_
(
"
Incorrect date_slot in GROUP BY section
"
))
return
f
"""
return
f
"""
GROUP BY date_trunc(
'
{
date_slot
}
'
,
GROUP BY date_trunc(
'
{
date_slot
}
'
,
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
)
cdc.date_slot AT TIME ZONE
'
UTC
'
AT TIME ZONE
'
Europe/Paris
'
),
cdc.timestep
"""
"""
@api.model
@api.model
...
@@ -381,11 +386,17 @@ class AccEnedisCdc(models.Model):
...
@@ -381,11 +386,17 @@ class AccEnedisCdc(models.Model):
)
)
for
row
in
raw_data
:
for
row
in
raw_data
:
# use KW here, divider depend of the timestep
# only use 30 or 15 minutes, by default its 30 minutes
divider
=
get_divider_from_row
(
row
)
label
.
append
(
row
[
0
])
label
.
append
(
row
[
0
])
data_cons
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
1
],
2
)})
data_cons
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
1
]
/
divider
,
2
)})
data_autocons
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
2
],
2
)})
data_autocons
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
2
]
/
divider
,
2
)})
data_allocons
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
1
]
-
row
[
2
],
2
)})
data_allocons
.
append
(
data_prod
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
3
],
2
)})
{
"
x
"
:
row
[
0
],
"
y
"
:
round
((
row
[
1
]
-
row
[
2
])
/
divider
,
2
)}
)
data_prod
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
3
]
/
divider
,
2
)})
cdc_cons
=
{
cdc_cons
=
{
"
label
"
:
label
,
"
label
"
:
label
,
...
@@ -437,8 +448,9 @@ class AccEnedisCdc(models.Model):
...
@@ -437,8 +448,9 @@ class AccEnedisCdc(models.Model):
self
.
env
.
cr
.
execute
(
query
)
self
.
env
.
cr
.
execute
(
query
)
raw_data
=
self
.
env
.
cr
.
fetchall
()
raw_data
=
self
.
env
.
cr
.
fetchall
()
for
row
in
raw_data
:
for
row
in
raw_data
:
data_autocons_histo
.
append
(
round
(
row
[
1
],
2
))
divider
=
get_divider_from_row
(
row
)
data_allocons_histo
.
append
(
round
(
row
[
2
],
2
))
data_autocons_histo
.
append
(
round
(
row
[
1
]
/
divider
,
2
))
data_allocons_histo
.
append
(
round
(
row
[
2
]
/
divider
,
2
))
label_histo
.
append
(
row
[
0
])
label_histo
.
append
(
row
[
0
])
cdc_cons
=
{
cdc_cons
=
{
...
@@ -524,9 +536,10 @@ class AccEnedisCdc(models.Model):
...
@@ -524,9 +536,10 @@ class AccEnedisCdc(models.Model):
)
)
for
row
in
raw_data
:
for
row
in
raw_data
:
divider
=
get_divider_from_row
(
row
)
label
.
append
(
row
[
0
])
label
.
append
(
row
[
0
])
data_autocons
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
1
],
2
)})
data_autocons
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
1
]
/
divider
,
2
)})
data_surplus
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
2
],
2
)})
data_surplus
.
append
({
"
x
"
:
row
[
0
],
"
y
"
:
round
(
row
[
2
]
/
divider
,
2
)})
cdc_prod
=
{
cdc_prod
=
{
"
label
"
:
label
,
"
label
"
:
label
,
...
@@ -570,9 +583,10 @@ class AccEnedisCdc(models.Model):
...
@@ -570,9 +583,10 @@ class AccEnedisCdc(models.Model):
self
.
env
.
cr
.
execute
(
query
)
self
.
env
.
cr
.
execute
(
query
)
raw_data
=
self
.
env
.
cr
.
fetchall
()
raw_data
=
self
.
env
.
cr
.
fetchall
()
for
row
in
raw_data
:
for
row
in
raw_data
:
divider
=
get_divider_from_row
(
row
)
label_histo
.
append
(
row
[
0
])
label_histo
.
append
(
row
[
0
])
data_autocons_prod_histo
.
append
(
round
(
row
[
1
],
2
))
data_autocons_prod_histo
.
append
(
round
(
row
[
1
]
/
divider
,
2
))
data_surplus_histo
.
append
(
round
(
row
[
2
],
2
))
data_surplus_histo
.
append
(
round
(
row
[
2
]
/
divider
,
2
))
cdc_jour
=
{
cdc_jour
=
{
"
label_histo
"
:
label_histo
,
"
label_histo
"
:
label_histo
,
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
tools/export_cdc.py
+
28
−
14
Voir le fichier @
7a47b4e0
...
@@ -94,26 +94,27 @@ def make_cons_data(raw_data):
...
@@ -94,26 +94,27 @@ def make_cons_data(raw_data):
data_file_lines
=
[]
data_file_lines
=
[]
rounding
=
3
rounding
=
3
for
row
in
raw_data
:
for
row
in
raw_data
:
divider
=
get_divider_from_row
(
row
)
data_file_lines
.
append
(
data_file_lines
.
append
(
"
;
"
.
join
(
"
;
"
.
join
(
[
[
# horodatage
# horodatage
row
[
0
].
strftime
(
"
%d/%m/%Y %H:%M
"
),
row
[
0
].
strftime
(
"
%d/%m/%Y %H:%M
"
),
# consommation en watt
# consommation en watt
str
(
round
(
row
[
1
]
*
2000
,
rounding
)),
str
(
round
(
(
row
[
1
]
*
2000
)
/
divider
,
rounding
)),
# consommation en kwh
# consommation en kwh
str
(
round
(
row
[
1
],
rounding
)),
str
(
round
(
row
[
1
]
/
divider
,
rounding
)),
# allocons
# allocons
str
(
round
(
row
[
3
],
rounding
)),
str
(
round
(
row
[
3
]
/
divider
,
rounding
)),
# autocons
# autocons
str
(
round
(
row
[
2
],
rounding
)),
str
(
round
(
row
[
2
]
/
divider
,
rounding
)),
]
]
)
)
)
)
sum_value
[
"
cons
"
]
+=
round
(
row
[
1
],
rounding
)
sum_value
[
"
cons
"
]
+=
round
(
row
[
1
]
/
divider
,
rounding
)
sum_value
[
"
allo_cons
"
]
+=
round
(
row
[
3
],
rounding
)
sum_value
[
"
allo_cons
"
]
+=
round
(
row
[
3
]
/
divider
,
rounding
)
sum_value
[
"
auto_cons
"
]
+=
round
(
row
[
2
],
rounding
)
sum_value
[
"
auto_cons
"
]
+=
round
(
row
[
2
]
/
divider
,
rounding
)
tot
=
"
;
"
.
join
(
tot
=
"
;
"
.
join
(
[
[
...
@@ -139,25 +140,26 @@ def make_prod_data(raw_data):
...
@@ -139,25 +140,26 @@ def make_prod_data(raw_data):
rounding
=
3
rounding
=
3
sum_value
=
{
"
prod
"
:
0
,
"
surplus
"
:
0
,
"
auto_cons
"
:
0
}
sum_value
=
{
"
prod
"
:
0
,
"
surplus
"
:
0
,
"
auto_cons
"
:
0
}
for
row
in
raw_data
:
for
row
in
raw_data
:
divider
=
get_divider_from_row
(
row
)
data_file_lines
.
append
(
data_file_lines
.
append
(
"
;
"
.
join
(
"
;
"
.
join
(
[
[
# horodatage
# horodatage
row
[
0
].
strftime
(
"
%d/%m/%Y %H:%M
"
),
row
[
0
].
strftime
(
"
%d/%m/%Y %H:%M
"
),
# production en watt
# production en watt
str
(
round
(
row
[
3
]
*
2000
,
rounding
)),
str
(
round
(
(
row
[
3
]
*
2000
)
/
divider
,
rounding
)),
# production en kwh
# production en kwh
str
(
round
(
row
[
3
],
rounding
)),
str
(
round
(
row
[
3
]
/
divider
,
rounding
)),
# surplus
# surplus
str
(
round
(
row
[
2
],
rounding
)),
str
(
round
(
row
[
2
]
/
divider
,
rounding
)),
# autocons
# autocons
str
(
round
(
row
[
1
],
rounding
)),
str
(
round
(
row
[
1
]
/
divider
,
rounding
)),
]
]
)
)
)
)
sum_value
[
"
prod
"
]
+=
round
(
row
[
3
],
rounding
)
sum_value
[
"
prod
"
]
+=
round
(
row
[
3
]
/
divider
,
rounding
)
sum_value
[
"
surplus
"
]
+=
round
(
row
[
2
],
rounding
)
sum_value
[
"
surplus
"
]
+=
round
(
row
[
2
]
/
divider
,
rounding
)
sum_value
[
"
auto_cons
"
]
+=
round
(
row
[
1
],
rounding
)
sum_value
[
"
auto_cons
"
]
+=
round
(
row
[
1
]
/
divider
,
rounding
)
tot
=
"
;
"
.
join
(
tot
=
"
;
"
.
join
(
[
[
...
@@ -211,3 +213,15 @@ def get_partner_name_from_id(operation, partner_id):
...
@@ -211,3 +213,15 @@ def get_partner_name_from_id(operation, partner_id):
"""
"""
return
operation
.
env
[
"
res.partner
"
].
browse
(
int
(
partner_id
)).
name
return
operation
.
env
[
"
res.partner
"
].
browse
(
int
(
partner_id
)).
name
def
get_divider_from_row
(
row
):
"""
Get divider from a data row
divider depends of the timestep
by default return 2000 (timestep of 30 min)
"""
if
row
[
-
1
]
==
15
:
return
4000
return
2000
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