From eea5a8533f11049a9bcfa3eb1fa6afa15b9a2151 Mon Sep 17 00:00:00 2001
From: Daniil Digtyar Vasilieva <daniildigtyar@gmail.com>
Date: Thu, 22 Jun 2023 12:31:42 +0200
Subject: [PATCH] [IMP] check to only upload csv files

---
 .../wizards/selfconsumption_import_wizard.py      | 15 +++++++++------
 .../selfconsumption_import_wizard_views.xml       |  3 ++-
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/energy_selfconsumption/wizards/selfconsumption_import_wizard.py b/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
index bd193358b..d5f8ec8be 100644
--- a/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
+++ b/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
@@ -1,5 +1,5 @@
-from odoo import fields, models, _
-from odoo.exceptions import UserError
+from odoo import fields, models, _, api
+from odoo.exceptions import UserError, ValidationError
 import base64
 import logging
 from io import StringIO
@@ -12,11 +12,14 @@ logger = logging.getLogger(__name__)
 class SelfconsumptionImportWizard(models.TransientModel):
     _name = 'energy_selfconsumption.selfconsumption_import.wizard'
 
-    name = fields.Char()
     import_file = fields.Binary(string="Import File (*.csv)")
-    fname = fields.Char(
-        string="Template Name", readonly=True
-    )
+    fname = fields.Char(string="File Name")
+
+    @api.constrains('import_file')
+    def _constrains_import_file(self):
+        format = str(self.fname.split(".")[1])
+        if format != 'csv':
+            raise ValidationError("Only csv format files are accepted.")
 
     def import_file_button(self):
         file_data = base64.b64decode(self.import_file)
diff --git a/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml b/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml
index 38e25e300..fe5622018 100644
--- a/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml
+++ b/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml
@@ -9,7 +9,8 @@
                 <form>
                     <sheet>
                         <group>
-                            <field name="import_file"></field>
+                            <field name="import_file" filename="fname" widget="binary"></field>
+                            <field name="fname" invisible="1"></field>
                         </group>
                     </sheet>
                     <footer>
-- 
GitLab