From 418b1c9548fc33e09dba8f0731941093a9bd7a55 Mon Sep 17 00:00:00 2001
From: Juliana <juliana@le-filament.com>
Date: Wed, 22 Mar 2023 12:28:40 +0100
Subject: [PATCH] [UPD]Update API Enedis V2

---
 models/api_enedis.py                | 10 +++++++---
 models/res_company.py               |  2 ++
 models/res_config_settings.py       | 11 ++++++++++-
 views/res_config_settings_views.xml | 18 ++++++++++++++++++
 4 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/models/api_enedis.py b/models/api_enedis.py
index 221537e..ec8f0cc 100644
--- a/models/api_enedis.py
+++ b/models/api_enedis.py
@@ -28,6 +28,7 @@ class ApiEnedis(models.AbstractModel):
         _logger.info("Création du Token de connexion Enedis")
 
         url_enedis = self.env.user.company_id.url_enedis
+        url_auth = self.env.user.company_id.url_auth
         if not url_enedis:
             raise UserError(
                 _(
@@ -39,10 +40,11 @@ class ApiEnedis(models.AbstractModel):
         secret_id = self.secret_id
         auth = _basic_auth_str(client_id, secret_id)
 
-        url = url_enedis + "v1/oauth2/token"
+        url = url_enedis + url_auth
         headers = {
             "Authorization": auth,
             "Content-Type": "application/x-www-form-urlencoded",
+            "Host": "ext.prod.api.enedis.fr",
         }
         formData = {
             "grant_type": "client_credentials",
@@ -134,8 +136,9 @@ class ApiEnedis(models.AbstractModel):
                 à la maille d'une opération ou
                 d'un PRM en particulier
         """
+        url_autocons = self.env.user.company_id.url_autocons
         url = (
-            "v1/collective_self_consumption/agreements/"
+            url_autocons
             + self.name
             + "/definitive_load_curves"
         )
@@ -252,7 +255,8 @@ class ApiEnedis(models.AbstractModel):
         :return Retourne le périmètre d'une opération donnée
                         Date de début et fin de contrat
         """
-        url = "v1/collective_self_consumption/agreements/" + self.name + "/perimeter"
+        url_autocons = self.env.user.company_id.url_autocons
+        url = url_autocons + self.name + "/perimeter"
 
         response = self.enedis_get_by_url(
             url=url, call_type="get", query=[], token=None
diff --git a/models/res_company.py b/models/res_company.py
index 4b44be4..a87bb4a 100644
--- a/models/res_company.py
+++ b/models/res_company.py
@@ -11,6 +11,8 @@ class ResCompany(models.Model):
     # Fields declaration
     # ------------------------------------------------------
     url_enedis = fields.Char(string="Url API de la plateforme de production interne")
+    url_auth = fields.Char(string="Base Url API pour authorisation de connexion")
+    url_autocons = fields.Char(string="Base Url API pour l'autoconsommation")
 
     # ------------------------------------------------------
     # SQL Constraints
diff --git a/models/res_config_settings.py b/models/res_config_settings.py
index 9b02ff8..53257a8 100644
--- a/models/res_config_settings.py
+++ b/models/res_config_settings.py
@@ -12,7 +12,16 @@ class ResConfigSettings(models.TransientModel):
         string="Url API de la plateforme de production interne",
         readonly=False,
     )
-
+    url_auth = fields.Char(
+        related="company_id.url_auth",
+        string="Base Url API pour authorisation de connexion",
+        readonly=False
+    )
+    url_autocons = fields.Char(
+        related="company_id.url_autocons",
+        string="Base Url API pour l'autoconsommation",
+        readonly=False
+    )
     # ------------------------------------------------------
     # Fields declaration
     # ------------------------------------------------------
diff --git a/views/res_config_settings_views.xml b/views/res_config_settings_views.xml
index cb39fd3..2cb593c 100644
--- a/views/res_config_settings_views.xml
+++ b/views/res_config_settings_views.xml
@@ -28,6 +28,24 @@
                                     <field name="url_enedis" />
                                 </div>
                             </div>
+                            <div class="o_setting_right_pane">
+                                <label string="API Autorisations URL" for="url_auth" />
+                                <div class="text-muted">
+                                    URL d'autorisation de l'API de la plateforme de production interne
+                                </div>
+                                <div class="mt8">
+                                    <field name="url_auth" />
+                                </div>
+                            </div>
+                            <div class="o_setting_right_pane">
+                                <label string="API Autoconsommation URL" for="url_autocons" />
+                                <div class="text-muted">
+                                    URL de l'autoconsommation pour l'API de la plateforme de production interne
+                                </div>
+                                <div class="mt8">
+                                    <field name="url_autocons" />
+                                </div>
+                            </div>
                         </div>
                     </div>
                 </div>
-- 
GitLab