From e96398435538f27b3ebb62b073613db7e63e64cb Mon Sep 17 00:00:00 2001
From: Juliana <juliana@le-filament.com>
Date: Mon, 10 Jan 2022 18:00:12 +0100
Subject: [PATCH] [UPD]adapt with acc

---
 README.rst                                    |   8 +-
 __manifest__.py                               |  10 +-
 data/service_cron.xml                         |   4 +-
 models/__init__.py                            |   2 +-
 ...enercoop_operation.py => acc_operation.py} |  19 ++--
 models/api_enedis.py                          | 104 ++++++++----------
 security/ir.model.access.csv                  |   4 +-
 ...tion_views.xml => acc_operation_views.xml} |  10 +-
 views/res_config_settings_views.xml           |  16 +--
 wizards/__init__.py                           |   2 +-
 ...tion_wizard.py => acc_operation_wizard.py} |   6 +-
 ...ews.xml => acc_operation_wizard_views.xml} |  12 +-
 12 files changed, 90 insertions(+), 107 deletions(-)
 rename models/{enercoop_operation.py => acc_operation.py} (77%)
 rename views/{enercoop_operation_views.xml => acc_operation_views.xml} (75%)
 rename wizards/{enercoop_operation_wizard.py => acc_operation_wizard.py} (89%)
 rename wizards/{enercoop_operation_wizard_views.xml => acc_operation_wizard_views.xml} (68%)

diff --git a/README.rst b/README.rst
index 5b135fc..e91ea20 100755
--- a/README.rst
+++ b/README.rst
@@ -3,15 +3,15 @@
    :alt: License: AGPL-3
 
 
-=====================
-ENERCOOP - API Enedis
-=====================
+================
+ACC - API Enedis
+================
 
 Description
 ===========
 
 Ce module implémente les fonctions pour l'API Enedis en utilisant le webservice mis à disposition.
-Il ajoute un nouveau modèle abstract qui définient les fonctions de connexion, de récupération des données.
+Il ajoute un nouveau modèle abstract qui définie les fonctions de connexion et de récupération des données.
 
 Usage
 =====
diff --git a/__manifest__.py b/__manifest__.py
index 178e51e..503610f 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -1,21 +1,21 @@
 {
-    'name': "ENERCOOP - API Enedis",
+    'name': "ACC - API Enedis",
     'summary': "API Enedis",
     'author': "Le Filament",
     'website': "https://www.le-filament.com",
-    'version': '12.0.1.0.1',
+    'version': '14.0.1.0.1',
     'license': "AGPL-3",
     'depends': [
-        'enercoop_partner'
+        'acc_operation'
     ],
     'data': [
         "security/ir.model.access.csv",
         # datas
         'data/service_cron.xml',
-        'wizards/enercoop_operation_wizard_views.xml',
+        'wizards/acc_operation_wizard_views.xml',
         # views
         'views/res_config_settings_views.xml',
-        'views/enercoop_operation_views.xml',
+        'views/acc_operation_views.xml',
         # views menu
 
     ],
diff --git a/data/service_cron.xml b/data/service_cron.xml
index a3e741e..fc769c9 100644
--- a/data/service_cron.xml
+++ b/data/service_cron.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <odoo>
     <record id="ir_cron_auto_get_enedis_data" model="ir.cron">
-        <field name="name">Enercoop - Get data API Enedis</field>
+        <field name="name">App - Get data API Enedis</field>
         <field name="interval_number">1</field>
         <field name="interval_type">days</field>
         <field name="numbercall">-1</field>
         <field name="doall" eval="False"/>
-        <field name="model_id" ref="enercoop_partner.model_enercoop_operation"/>
+        <field name="model_id" ref="acc_operation.model_acc_operation"/>
         <field name="code">model._auto_get_enedis_data()</field>
         <field name="state">code</field>
     </record>
diff --git a/models/__init__.py b/models/__init__.py
index b02c98e..4a09f0a 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -4,4 +4,4 @@
 from . import res_company
 from . import res_config_settings
 from . import api_enedis
-from . import enercoop_operation
+from . import acc_operation
diff --git a/models/enercoop_operation.py b/models/acc_operation.py
similarity index 77%
rename from models/enercoop_operation.py
rename to models/acc_operation.py
index 769145a..0429a64 100644
--- a/models/enercoop_operation.py
+++ b/models/acc_operation.py
@@ -6,9 +6,9 @@ from datetime import datetime, date
 from dateutil.relativedelta import relativedelta
 
 
-class EnercoopOperation(models.Model):
-    _name = 'enercoop.operation'
-    _inherit = ['enercoop.operation', 'api.enedis']
+class AccOperation(models.Model):
+    _name = 'acc.operation'
+    _inherit = ['acc.operation', 'api.enedis']
 
     # ------------------------------------------------------
     # Fields declaration
@@ -61,17 +61,14 @@ class EnercoopOperation(models.Model):
     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, token=token)
-            self.definitive_load_curves(date_start, date_end, 'autocons', delivery_counter_id.enercoop_counter_id, token=token)
+        for delivery_counter_id in self.acc_delivery_ids:
+            self.definitive_load_curves(date_start, date_end, delivery_counter_id, 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, token=token)
-
-        # Load surplus data by operation
-        self.definitive_load_curves(date_start, date_end, 'surplus', usage_point_id=None, token=token)
+        for injection_counter_id in self.acc_injection_ids:
+            self.definitive_load_curves(date_start, date_end, injection_counter_id, token=token)
 
     def get_perimeter(self):
         for operation in self:
diff --git a/models/api_enedis.py b/models/api_enedis.py
index 2bd7faa..fcede75 100644
--- a/models/api_enedis.py
+++ b/models/api_enedis.py
@@ -30,7 +30,7 @@ class ApiEnedis(models.AbstractModel):
         url_enedis = self.env.user.company_id.url_enedis
         if not url_enedis:
             raise UserError(
-                "L'API n'est pas configurée. Veuillez rentrer l'URL de l'API dans Enercoop -> Configuration -> Configuration")
+                "L'API n'est pas configurée. Veuillez rentrer l'URL de l'API dans app -> Configuration -> Configuration")
         client_id = self.client_id
         secret_id = self.secret_id
         auth = _basic_auth_str(client_id, secret_id)
@@ -128,13 +128,11 @@ class ApiEnedis(models.AbstractModel):
                     message))
         return response
 
-    def definitive_load_curves(self, date_start, date_end, type, usage_point_id=None, token=None):
+    def definitive_load_curves(self, date_start, date_end, usage_point_id=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
+            de chare en fonction d'un intervalle de date
             :param  date_start: une date de début
                     date_end: une date de fin
-                    type: type de courbe à récupérer 
-                          (cons/autocons/surplus/prod)
                     usage_point_id: id du PRM
             :return Retourner les courbes de charge
                     à la maille d'une opération ou
@@ -143,20 +141,20 @@ class ApiEnedis(models.AbstractModel):
         url = 'v1/collective_self_consumption/agreements/' + self.name + '/definitive_load_curves'
 
         if usage_point_id:
-            name = usage_point_id.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
+            name = usage_point_id.name + '_' + str(date_start) + '_' + str(date_end)
         else:
-            name = self.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
+            name = self.name + '_' + str(date_start) + '_' + str(date_end)
 
-        log_id = self.env['enercoop.enedis.cdc'].search([
+        log_id = self.env['acc.enedis.cdc'].search([
             ('name', '=', name),
-            ('enercoop_operation_id', '=', self.id)
+            ('acc_operation_id', '=', self.id)
         ])
         if not log_id:
-            self.load_data(url, date_start, date_end, type, usage_point_id=usage_point_id, token=token)
+            self.load_data(url, date_start, date_end, usage_point_id=usage_point_id, token=token)
 
         return True
 
-    def load_data(self, url, date_start, date_end, type_courbe=None, usage_point_id=None, token=None):
+    def load_data(self, url, date_start, date_end, usage_point_id=None, token=None):
         """ Read function
             :param  url : URL à appeler
                     date_start: une date de début
@@ -180,7 +178,7 @@ class ApiEnedis(models.AbstractModel):
             # Date de fin de la période souhaitée.La date est incluse dans la période
             'end': date_end,
             # Type de la courbe (enum)
-            'type': type_courbe,
+            "type": ['cons,autocons,surplus,prod,complement'],
             # Identifiant du PRM
             'usage_point_id': usage_point_name
         }
@@ -192,26 +190,21 @@ class ApiEnedis(models.AbstractModel):
 
         # get the data
         curves = response.json().get('curves')
+
+        if curves:
+            name = usage_point_id.name + '_' + str(date_start) + '_' + str(date_end)
         for curve in curves:
             type = curve['type']
-            if usage_point_id:
-                name = usage_point_id.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
-            else:
-                name = self.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
-
             domain_all = [
                 ('date_slot', '>=', date_start),
                 ('date_slot', '<=', date_end),
-                ('enercoop_operation_id', '=', self.id),
+                ('acc_operation_id', '=', self.id),
                 ('comp_data_type', '=', type),
             ]
 
-            if counter_id:
-                domain_prm = domain_all + [('enercoop_counter_id', '=', counter_id)]
-            else:
-                domain_prm = domain_all + [('enercoop_counter_id', '=', False)]
+            domain_prm = domain_all + [('acc_counter_id', '=', counter_id)]
 
-            enercoop_enedis_cdc_ids = self.env['enercoop.enedis.cdc'].search(domain_prm)
+            acc_enedis_cdc_ids = self.env['acc.enedis.cdc'].search(domain_prm)
 
             record_created = False
 
@@ -219,12 +212,12 @@ class ApiEnedis(models.AbstractModel):
                 date_slot = pytz.utc.localize(datetime.strptime(point['timestamp'], "%Y-%m-%dT%H:%M:%SZ"))
                 date_slot3 = fields.Datetime.to_string(date_slot)
 
-                record = enercoop_enedis_cdc_ids.filtered(lambda l: l.date_slot == fields.Datetime.to_datetime(date_slot3))
+                record = acc_enedis_cdc_ids.filtered(lambda l: l.date_slot == fields.Datetime.to_datetime(date_slot3))
                 if not record:
-                    self.env['enercoop.enedis.cdc'].create({
+                    self.env['acc.enedis.cdc'].create({
                         'name': name,
-                        'enercoop_operation_id': self.id,
-                        'enercoop_counter_id': counter_id or False,
+                        'acc_operation_id': self.id,
+                        'acc_counter_id': counter_id or False,
                         'comp_data_type': type,
                         'power': point['value'],
                         'date_slot': date_slot3,
@@ -232,13 +225,13 @@ class ApiEnedis(models.AbstractModel):
 
                     record_created = True
 
-            if record_created:
-                # Logs information loaded
-                self.env['enercoop.enedis.import.logs'].create({
-                    'name': name,
-                    'enercoop_operation_id': self.id,
-                })
-                self.is_data_enedis = True
+        if record_created:
+            # Logs information loaded
+            self.env['acc.enedis.import.logs'].create({
+                'name': name,
+                'acc_operation_id': self.id,
+            })
+            self.is_data_enedis = True
 
     def perimeter(self):
         """ Fonction permettant d'appeler l'API Enedis et retourne le périmètre
@@ -258,39 +251,32 @@ class ApiEnedis(models.AbstractModel):
         usage_points = response.json().get('usage_points')
 
         for usage_point in usage_points:
-            usage_id = self.env['enercoop.counter.operation'].search([
-                ('operation_id', '=', self.id),
-                ('enercoop_counter_id', '=', usage_point['usage_point_id'])])
+            usage_id = self.env['acc.counter'].search([
+                ('acc_operation_id', '=', self.id),
+                ('name', '=', usage_point['usage_point_id'])])
             if usage_id:
                 usage_id.write({
                     'date_start_contract': date.fromisoformat(usage_point['start']),
                     'date_end_contract': date.fromisoformat(usage_point['end']),
                 })
             else:
-                prm_id = self.env['enercoop.counter'].search([
-                    ('name', '=', usage_point['usage_point_id'])])
-                if not prm_id:
-                    is_delivery = False
-                    is_injection = False
-                    if usage_point['type'] == 'CONS':
-                        is_delivery = True
-                    if usage_point['type'] == 'PROD':
-                        is_injection = True
-                        self.date_start_contract = date.fromisoformat(usage_point['start'])
-                        self.date_end_contract = date.fromisoformat(usage_point['end'])
-
-                    prm_id = self.env['enercoop.counter'].create({
-                        'name': usage_point['usage_point_id'],
-                        'is_delivery': is_delivery,
-                        'is_injection': is_injection,
-                    })
-
-                self.env['enercoop.counter.operation'].create({
-                    'enercoop_counter_id': prm_id.id,
-                    'operation_id': self.id,
+                is_delivery = False
+                is_injection = False
+                if usage_point['type'] == 'CONS':
+                    is_delivery = True
+                if usage_point['type'] == 'PROD':
+                    is_injection = True
+                    self.date_start_contract = date.fromisoformat(usage_point['start'])
+                    self.date_end_contract = date.fromisoformat(usage_point['end'])
+
+                prm_id = self.env['acc.counter'].create({
+                    'name': usage_point['usage_point_id'],
+                    'is_delivery': is_delivery,
+                    'is_injection': is_injection,
+                    'acc_operation_id': self.id,
                     'date_start_contract': date.fromisoformat(usage_point['start']),
                     'date_end_contract': date.fromisoformat(usage_point['end']),
-                    'partner_id': prm_id.partner_id.id or None
                 })
 
+
         return True
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 997c845..1e804f3 100755
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -1,5 +1,5 @@
 id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
 "access_api_enedis_group_partner_manager","api_enedis group_partner_manager","model_api_enedis","base.group_partner_manager",1,1,1,1
 "access_api_enedis_group_user","api_enedis group_user","model_api_enedis","base.group_user",1,0,0,0
-"access_enercoop_operation_wizard_group_partner_manager","enercoop_operation_wizard group_partner_manager","model_enercoop_operation_wizard","base.group_partner_manager",1,1,1,1
-"access_enercoop_operation_wizard_group_user","enercoop_operation_wizard group_user","model_enercoop_operation_wizard","base.group_user",1,0,0,0
\ No newline at end of file
+"access_acc_operation_wizard_group_partner_manager","acc_operation_wizard group_partner_manager","model_acc_operation_wizard","base.group_partner_manager",1,1,1,1
+"access_acc_operation_wizard_group_user","acc_operation_wizard group_user","model_acc_operation_wizard","base.group_user",1,0,0,0
\ No newline at end of file
diff --git a/views/enercoop_operation_views.xml b/views/acc_operation_views.xml
similarity index 75%
rename from views/enercoop_operation_views.xml
rename to views/acc_operation_views.xml
index 26c39bb..39a6bde 100644
--- a/views/enercoop_operation_views.xml
+++ b/views/acc_operation_views.xml
@@ -2,10 +2,10 @@
 <odoo>
     <data>
         
-        <record id="enercoop_operation_form_view" model="ir.ui.view">
-            <field name="name">enercoop_operation_form_view.api.form</field>
-            <field name="model">enercoop.operation</field>
-            <field name="inherit_id" ref="enercoop_partner.enercoop_operation_form_view"/>
+        <record id="acc_operation_form_view" model="ir.ui.view">
+            <field name="name">acc_operation_form_view.api.form</field>
+            <field name="model">acc.operation</field>
+            <field name="inherit_id" ref="acc_operation.acc_operation_form_view"/>
             <field name="arch" type="xml">
                 <header position="inside">
                     <button
@@ -16,7 +16,7 @@
                     <button
                             string="Récupération des courbes"
                             type="action"
-                            name="%(enercoop_enedis_api.enercoop_operation_wizard_action)d"
+                            name="%(acc_enedis_api.acc_operation_wizard_action)d"
                             attrs="{'invisible':[('client_id','=', False), ('secret_id','=', False)]}"
                     />
                 </header>
diff --git a/views/res_config_settings_views.xml b/views/res_config_settings_views.xml
index 29c48bc..8bcbd5b 100644
--- a/views/res_config_settings_views.xml
+++ b/views/res_config_settings_views.xml
@@ -2,15 +2,15 @@
 <odoo>
 
     <record id="res_config_settings_view_form" model="ir.ui.view">
-        <field name="name">res.config.settings.view.form.inherit.enercoop</field>
+        <field name="name">res.config.settings.view.form.inherit.app</field>
         <field name="model">res.config.settings</field>
         <field name="priority" eval="10"/>
         <field name="inherit_id" ref="base.res_config_settings_view_form" />
         <field name="arch" type="xml">
             <xpath expr="//div[hasclass('settings')]" position="inside">
-                <div class="app_settings_block" data-string="Enercoop" string="Enercoop" data-key="enercoop_enedis_api">
+                <div class="acc_settings_block" data-string="ACC" string="ACC" data-key="acc_enedis_api">
                     <h2>Connexion Enedis</h2>
-                    <div class="row mt16 o_settings_container" id="enercoop_selection_settings">
+                    <div class="row mt16 o_settings_container" id="acc_selection_settings">
                         <div class="col-12 col-lg-6 o_setting_box" id="url_enedis">
                             <div class="o_setting_right_pane">
                                 <label string="URL" for="url_enedis"/>
@@ -28,21 +28,21 @@
         </field>
     </record>
 
-    <record id="action_enercoop_config_settings" model="ir.actions.act_window">
+    <record id="action_acc_config_settings" model="ir.actions.act_window">
         <field name="name">Configuration</field>
         <field name="type">ir.actions.act_window</field>
         <field name="res_model">res.config.settings</field>
         <field name="view_id" ref="res_config_settings_view_form"/>
         <field name="view_mode">form</field>
         <field name="target">inline</field>
-        <field name="context">{'module' : 'enercoop_enedis_api', 'bin_size': False}</field>
+        <field name="context">{'module' : 'acc_enedis_api', 'bin_size': False}</field>
     </record>
 
-    <menuitem id="menu_enercoop_general_settings"
+    <menuitem id="menu_acc_general_settings"
         name="Configuration"
-        parent="enercoop_partner.menu_enercoop_config"
+        parent="acc_operation.menu_acc_config"
         sequence="0"
-        action="action_enercoop_config_settings"
+        action="action_acc_config_settings"
         groups="base.group_system"/>
 
 </odoo>
diff --git a/wizards/__init__.py b/wizards/__init__.py
index 93cab0b..2db9426 100644
--- a/wizards/__init__.py
+++ b/wizards/__init__.py
@@ -1,4 +1,4 @@
 # Copyright 2020 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
-from . import enercoop_operation_wizard
+from . import acc_operation_wizard
diff --git a/wizards/enercoop_operation_wizard.py b/wizards/acc_operation_wizard.py
similarity index 89%
rename from wizards/enercoop_operation_wizard.py
rename to wizards/acc_operation_wizard.py
index 3e31665..b3cd7fd 100644
--- a/wizards/enercoop_operation_wizard.py
+++ b/wizards/acc_operation_wizard.py
@@ -5,8 +5,8 @@ from odoo import fields, models
 from odoo.exceptions import UserError
 
 
-class EnercoopOperationWizard(models.TransientModel):
-    _name = 'enercoop.operation.wizard'
+class appOperationWizard(models.TransientModel):
+    _name = 'acc.operation.wizard'
     _description = "Récupération des courbes pour une date donnée"
 
     # ------------------------------------------------------
@@ -44,7 +44,7 @@ class EnercoopOperationWizard(models.TransientModel):
                 "L'intervalle de temps ne doit pas dépasser 31 Jours")
         context = dict(self._context or {})
         if context.get('active_ids', False):
-            self.env['enercoop.operation'].browse(context.get('active_ids')).get_curves(self.date_start, self.date_end)
+            self.env['acc.operation'].browse(context.get('active_ids')).get_curves(self.date_start, self.date_end)
         return {'type': 'ir.actions.act_window_close'}
     # ------------------------------------------------------
     # Business methods
diff --git a/wizards/enercoop_operation_wizard_views.xml b/wizards/acc_operation_wizard_views.xml
similarity index 68%
rename from wizards/enercoop_operation_wizard_views.xml
rename to wizards/acc_operation_wizard_views.xml
index fd6f30a..bdd9029 100644
--- a/wizards/enercoop_operation_wizard_views.xml
+++ b/wizards/acc_operation_wizard_views.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <odoo>
     <!-- WIZARD FORM -->
-    <record id="enercoop_operation_wizard_view_form" model="ir.ui.view">
-        <field name="name">enercoop.operation.wizard.form</field>
-        <field name="model">enercoop.operation.wizard</field>
+    <record id="acc_operation_wizard_view_form" model="ir.ui.view">
+        <field name="name">acc.operation.wizard.form</field>
+        <field name="model">acc.operation.wizard</field>
         <field name="arch" type="xml">
             <form string="Choix de la période">
                 <group name="period" string="Période" col="2">
@@ -18,12 +18,12 @@
         </field>
     </record>
 
-    <record id="enercoop_operation_wizard_action" model="ir.actions.act_window">
+    <record id="acc_operation_wizard_action" model="ir.actions.act_window">
         <field name="name">Récupération des courbes</field>
         <field name="type">ir.actions.act_window</field>
-        <field name="res_model">enercoop.operation.wizard</field>
+        <field name="res_model">acc.operation.wizard</field>
         <field name="view_mode">form</field>
-        <field name="view_id" ref="enercoop_operation_wizard_view_form"/>
+        <field name="view_id" ref="acc_operation_wizard_view_form"/>
         <field name="target">new</field>
     </record>
 
-- 
GitLab