From 6532668253d26107a8a66b7871f429c57515c5b9 Mon Sep 17 00:00:00 2001 From: Juliana <juliana@le-filament.com> Date: Tue, 6 Jul 2021 15:57:01 +0200 Subject: [PATCH] [FIX] Correction call api --- models/api_enedis.py | 28 +++++++++++++--------------- models/enercoop_operation.py | 12 ++++++------ 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/models/api_enedis.py b/models/api_enedis.py index de45952..a3ac325 100644 --- a/models/api_enedis.py +++ b/models/api_enedis.py @@ -4,6 +4,7 @@ import requests import logging import pytz +import json from datetime import datetime, date @@ -71,7 +72,7 @@ class ApiEnedis(models.AbstractModel): print("--- token ---", str(token)) return token - def enedis_get_by_url(self, url, call_type, query=None): + def enedis_get_by_url(self, url, call_type, query=None, token=None): """ Création de la requête à Enedis :param url: action API Enedis @@ -81,10 +82,10 @@ class ApiEnedis(models.AbstractModel): @return response au format JSON """ _logger.info("Calling %s" % url) + if not token: + token = self.access_token() - token = self.access_token() url_enedis = self.env.user.company_id.url_enedis - # url_enedis = 'https://gw.hml.api.enedis.fr/' header = { 'Content-Type': 'application/json;charset=UTF-8', @@ -111,17 +112,12 @@ class ApiEnedis(models.AbstractModel): ) response = False - try: - response.raise_for_status() - except Exception as error: - raise ValueError('Autentication failed: {}'.format(error)) - # Gestion erreur API if response.status_code not in [200]: try: - message = response.json().get('content') + message = response.json().get('error_description') except: - message = response.content + message = response.error_description raise exceptions.Warning( "L'appel url '%s' a échoué\n" "- Code erreur : %d\n" @@ -131,7 +127,7 @@ class ApiEnedis(models.AbstractModel): message)) return response - def definitive_load_curves(self, date_start, date_end, type, usage_point_name=None): + def definitive_load_curves(self, date_start, date_end, type, usage_point_name=None, token=None): """ Fonction permettant d'appeler l'API Enedis et retourne les courbes de chare en fonction d'un intervalle de date et d'un type :param date_start: une date de début @@ -155,11 +151,11 @@ class ApiEnedis(models.AbstractModel): ('enercoop_operation_id', '=', self.id) ]) if not log_id: - self.load_data(url, date_start, date_end, type, usage_point_name) + self.load_data(url, date_start, date_end, type, usage_point_name, token) return True - def load_data(self, url, date_start, date_end, type_courbe=None, usage_point_name=None): + def load_data(self, url, date_start, date_end, type_courbe=None, usage_point_name=None, token=None): """ Read function :param url : URL à appeler date_start: une date de début @@ -184,7 +180,8 @@ class ApiEnedis(models.AbstractModel): response = self.enedis_get_by_url( url=url, call_type='get', - query=query) + query=query, + token=token) # get the data curves = response.json().get('curves') @@ -247,7 +244,8 @@ class ApiEnedis(models.AbstractModel): response = self.enedis_get_by_url( url=url, call_type='get', - query=[]) + query=[], + token=None) usage_points = response.json().get('usage_points') diff --git a/models/enercoop_operation.py b/models/enercoop_operation.py index e992b80..0c69de1 100644 --- a/models/enercoop_operation.py +++ b/models/enercoop_operation.py @@ -57,19 +57,19 @@ class EnercoopOperation(models.Model): # Actions # ------------------------------------------------------ def get_curves(self, date_start, date_end): + # Ask token to API + token = self.access_token() # Load consommation data by PRM for delivery_counter_id in self.enercoop_delivery_operation_ids: - self.definitive_load_curves(date_start, date_end, 'cons', delivery_counter_id.enercoop_counter_id.name) - self.definitive_load_curves(date_start, date_end, 'autocons', delivery_counter_id.enercoop_counter_id.name) + self.definitive_load_curves(date_start, date_end, 'cons', delivery_counter_id.enercoop_counter_id.name, token=token) + self.definitive_load_curves(date_start, date_end, 'autocons', delivery_counter_id.enercoop_counter_id.name, token=token) # Load production data by PRM for injection_counter_id in self.enercoop_injection_operation_ids: - self.definitive_load_curves(date_start, date_end, 'prod', injection_counter_id.enercoop_counter_id.name) + self.definitive_load_curves(date_start, date_end, 'prod', injection_counter_id.enercoop_counter_id.name, token=token) # Load surplus data by operation - self.definitive_load_curves(date_start, date_end, 'surplus', None) - - # self.definitive_load_curves(date_start, date_end) + self.definitive_load_curves(date_start, date_end, 'surplus', None, token=token) def get_perimeter(self): for operation in self: -- GitLab