Skip to content
Extraits de code Groupes Projets
Valider a75adc1b rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[add] update object if resync

parent 2761a085
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -13,7 +13,8 @@ _logger = logging.getLogger(__name__) ...@@ -13,7 +13,8 @@ _logger = logging.getLogger(__name__)
class CgscopRigaOdooImport(models.Model): class CgscopRigaOdooImport(models.Model):
""" Ce modèle permet de logguer les imports de RIGA """
Ce modèle permet de logguer les imports de RIGA
vers Odoo vers Odoo
""" """
_name = 'riga.odoo.import' _name = 'riga.odoo.import'
...@@ -35,7 +36,8 @@ class CgscopRigaOdooImport(models.Model): ...@@ -35,7 +36,8 @@ class CgscopRigaOdooImport(models.Model):
# Fonctions génériques # Fonctions génériques
# ------------------------------------------------------ # ------------------------------------------------------
def _get_ftp_file(self, filename, ftp_channel): def _get_ftp_file(self, filename, ftp_channel):
""" Fonction de récupértion d'ufichier sur un FTP. """
Fonction de récupértion d'ufichier sur un FTP.
Cette fonction prend en paramètre un nom de fichier et recherche Cette fonction prend en paramètre un nom de fichier et recherche
dans le fichier de conf Odoo les login et password, puis dans les dans le fichier de conf Odoo les login et password, puis dans les
...@@ -69,8 +71,10 @@ class CgscopRigaOdooImport(models.Model): ...@@ -69,8 +71,10 @@ class CgscopRigaOdooImport(models.Model):
except Exception as e: except Exception as e:
raise exceptions.Warning(e) raise exceptions.Warning(e)
def _read_file(self, model, file, table, primary_key, header_key, resync=False): def _read_file(self, model, file, table, primary_key, header_key,
""" Cette fonction prend en paramètre un fichier CSV et lit resync=False, log_id=None):
"""
Cette fonction prend en paramètre un fichier CSV et lit
chaque ligne pour mettre à jour la ligne de la table correspondante chaque ligne pour mettre à jour la ligne de la table correspondante
si elle existe ou la créer si l'organisme existe si elle existe ou la créer si l'organisme existe
...@@ -82,6 +86,7 @@ class CgscopRigaOdooImport(models.Model): ...@@ -82,6 +86,7 @@ class CgscopRigaOdooImport(models.Model):
:param parent_id (string): header du fichier CSV pour lequel on va :param parent_id (string): header du fichier CSV pour lequel on va
rechercher l'ID RIGA de l'organisme rechercher l'ID RIGA de l'organisme
:param resync (bool): le fichier a été synchronisé manuellement :param resync (bool): le fichier a été synchronisé manuellement
:param log_id (obj): ojjet à mettre à jour si pas de création
""" """
try: try:
file.seek(0) file.seek(0)
...@@ -133,7 +138,7 @@ class CgscopRigaOdooImport(models.Model): ...@@ -133,7 +138,7 @@ class CgscopRigaOdooImport(models.Model):
['model_id', '=', model.id]]) ['model_id', '=', model.id]])
date_value = fields.Datetime.now() + datetime.timedelta(days=data.day) date_value = fields.Datetime.now() + datetime.timedelta(days=data.day)
# Création du log # Création du log
self.create({ vals = {
'model_id': model.id, 'model_id': model.id,
'is_sync': True, 'is_sync': True,
'filename': (data.riga_filename + 'filename': (data.riga_filename +
...@@ -146,17 +151,25 @@ class CgscopRigaOdooImport(models.Model): ...@@ -146,17 +151,25 @@ class CgscopRigaOdooImport(models.Model):
" - Mise à jour de " + str(maj_nb) + " lignes\n\n" + log), " - Mise à jour de " + str(maj_nb) + " lignes\n\n" + log),
'is_warning': True if log else False, 'is_warning': True if log else False,
'is_resync': resync, 'is_resync': resync,
}) }
if not log_id:
self.create(vals)
else:
log_id.update(vals)
except Exception as e: except Exception as e:
_logger.error(e.__str__()) _logger.error(e.__str__())
# Création du log # Création du log
self.create({ vals = {
'model_id': model.id, 'model_id': model.id,
'is_sync': False, 'is_sync': False,
'is_error': True, 'is_error': True,
'log': str(e) 'log': str(e)
}) }
if not log_id:
self.create(vals)
else:
log_id.update(vals)
def _cast_type(self, model, field, value, relation=None): def _cast_type(self, model, field, value, relation=None):
""" Détermine en fonction du champ la valeur typée à renvoyer """ Détermine en fonction du champ la valeur typée à renvoyer
...@@ -199,14 +212,14 @@ class CgscopRigaOdooImport(models.Model): ...@@ -199,14 +212,14 @@ class CgscopRigaOdooImport(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Import données # Import données
# ------------------------------------------------------ # ------------------------------------------------------
def odoo_sync(self): def odoo_sync(self):
model_sync = self.env['riga.files.matching'].sudo().search([ model_sync = self.env['riga.files.matching'].sudo().search([
['is_active', '=', True]]) ['is_active', '=', True]])
self.sync_file(model_sync) self.sync_file(model_sync)
def sync_file(self, model_sync): def sync_file(self, model_sync):
""" Fonction de synchronisation des fichiers CSV RIGA """
Fonction de synchronisation des fichiers CSV RIGA
avec les tables associées Odoo. avec les tables associées Odoo.
La fonction recherche l'ensembles des synchronisations actives La fonction recherche l'ensembles des synchronisations actives
...@@ -240,6 +253,10 @@ class CgscopRigaOdooImport(models.Model): ...@@ -240,6 +253,10 @@ class CgscopRigaOdooImport(models.Model):
header_key=model.header_key) header_key=model.header_key)
def resync_file(self): def resync_file(self):
"""
Fonction appelée pour la resynchronisation d'un log
en erreur
"""
model = self.env['riga.files.matching'].sudo().search([ model = self.env['riga.files.matching'].sudo().search([
['model_id', '=', self.model_id.id]]) ['model_id', '=', self.model_id.id]])
table = [] table = []
...@@ -251,4 +268,5 @@ class CgscopRigaOdooImport(models.Model): ...@@ -251,4 +268,5 @@ class CgscopRigaOdooImport(models.Model):
table=table, table=table,
primary_key=model.primary_key, primary_key=model.primary_key,
header_key=model.header_key, header_key=model.header_key,
resync=True) resync=True,
log_id=self)
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
<field name="is_warning" readonly="1" /> <field name="is_warning" readonly="1" />
<field name="is_error" readonly="1" /> <field name="is_error" readonly="1" />
<field name="is_resync" readonly="1" /> <field name="is_resync" readonly="1" />
<field name="write_date" readonly="1" />
</group> </group>
</group> </group>
<group> <group>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter