From 2761a0855cbe4321f713a40b04c3a6f4577afd24 Mon Sep 17 00:00:00 2001 From: Benjamin <benjamin@le-filament.com> Date: Tue, 18 Aug 2020 16:31:21 +0200 Subject: [PATCH] [add] resync option from log --- models/riga_odoo_import.py | 19 ++++++++++++++++++- views/riga_odoo_import.xml | 4 ++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/models/riga_odoo_import.py b/models/riga_odoo_import.py index 309565f..041f48c 100644 --- a/models/riga_odoo_import.py +++ b/models/riga_odoo_import.py @@ -28,6 +28,7 @@ class CgscopRigaOdooImport(models.Model): is_warning = fields.Boolean('Warning', default=False) log = fields.Text('Log') is_error = fields.Boolean('Erreur Synchro', default=False) + is_resync = fields.Boolean('Re-Synchronisé', default=False) filename = fields.Char('Nom du fichier') # ------------------------------------------------------ @@ -68,7 +69,7 @@ class CgscopRigaOdooImport(models.Model): except Exception as e: raise exceptions.Warning(e) - def _read_file(self, model, file, table, primary_key, header_key): + def _read_file(self, model, file, table, primary_key, header_key, resync=False): """ Cette fonction prend en paramètre un fichier CSV et lit chaque ligne pour mettre à jour la ligne de la table correspondante si elle existe ou la créer si l'organisme existe @@ -80,6 +81,7 @@ class CgscopRigaOdooImport(models.Model): :param primary_key (string): header du fichier CSV correspondant à la clé :param parent_id (string): header du fichier CSV pour lequel on va rechercher l'ID RIGA de l'organisme + :param resync (bool): le fichier a été synchronisé manuellement """ try: file.seek(0) @@ -143,6 +145,7 @@ class CgscopRigaOdooImport(models.Model): " - Création de " + str(crea_nb) + " lignes\n" + " - Mise à jour de " + str(maj_nb) + " lignes\n\n" + log), 'is_warning': True if log else False, + 'is_resync': resync, }) except Exception as e: @@ -235,3 +238,17 @@ class CgscopRigaOdooImport(models.Model): table=table, primary_key=model.primary_key, header_key=model.header_key) + + def resync_file(self): + model = self.env['riga.files.matching'].sudo().search([ + ['model_id', '=', self.model_id.id]]) + table = [] + for header in model.matching_table_ids: + table.append([header.name, header.riga_name, header.relation]) + self._read_file( + model=self.model_id, + file=self._get_ftp_file(self.filename, model.ftp_channel_id), + table=table, + primary_key=model.primary_key, + header_key=model.header_key, + resync=True) diff --git a/views/riga_odoo_import.xml b/views/riga_odoo_import.xml index 693908a..e84edf7 100644 --- a/views/riga_odoo_import.xml +++ b/views/riga_odoo_import.xml @@ -27,6 +27,9 @@ <field name="model">riga.odoo.import</field> <field name="arch" type="xml"> <form> + <header> + <button type="object" string="Re-Synchroniser" name="resync_file"></button> + </header> <sheet> <group> <group> @@ -38,6 +41,7 @@ <field name="is_sync"/> <field name="is_warning" readonly="1" /> <field name="is_error" readonly="1" /> + <field name="is_resync" readonly="1" /> </group> </group> <group> -- GitLab