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__)
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
"""
_name = 'riga.odoo.import'
......@@ -35,7 +36,8 @@ class CgscopRigaOdooImport(models.Model):
# Fonctions génériques
# ------------------------------------------------------
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
dans le fichier de conf Odoo les login et password, puis dans les
......@@ -69,8 +71,10 @@ class CgscopRigaOdooImport(models.Model):
except Exception as e:
raise exceptions.Warning(e)
def _read_file(self, model, file, table, primary_key, header_key, resync=False):
""" Cette fonction prend en paramètre un fichier CSV et lit
def _read_file(self, model, file, table, primary_key, header_key,
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
si elle existe ou la créer si l'organisme existe
......@@ -82,6 +86,7 @@ class CgscopRigaOdooImport(models.Model):
: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
:param log_id (obj): ojjet à mettre à jour si pas de création
"""
try:
file.seek(0)
......@@ -133,7 +138,7 @@ class CgscopRigaOdooImport(models.Model):
['model_id', '=', model.id]])
date_value = fields.Datetime.now() + datetime.timedelta(days=data.day)
# Création du log
self.create({
vals = {
'model_id': model.id,
'is_sync': True,
'filename': (data.riga_filename +
......@@ -146,17 +151,25 @@ class CgscopRigaOdooImport(models.Model):
" - Mise à jour de " + str(maj_nb) + " lignes\n\n" + log),
'is_warning': True if log else False,
'is_resync': resync,
})
}
if not log_id:
self.create(vals)
else:
log_id.update(vals)
except Exception as e:
_logger.error(e.__str__())
# Création du log
self.create({
vals = {
'model_id': model.id,
'is_sync': False,
'is_error': True,
'log': str(e)
})
}
if not log_id:
self.create(vals)
else:
log_id.update(vals)
def _cast_type(self, model, field, value, relation=None):
""" Détermine en fonction du champ la valeur typée à renvoyer
......@@ -199,14 +212,14 @@ class CgscopRigaOdooImport(models.Model):
# ------------------------------------------------------
# Import données
# ------------------------------------------------------
def odoo_sync(self):
model_sync = self.env['riga.files.matching'].sudo().search([
['is_active', '=', True]])
self.sync_file(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.
La fonction recherche l'ensembles des synchronisations actives
......@@ -240,6 +253,10 @@ class CgscopRigaOdooImport(models.Model):
header_key=model.header_key)
def resync_file(self):
"""
Fonction appelée pour la resynchronisation d'un log
en erreur
"""
model = self.env['riga.files.matching'].sudo().search([
['model_id', '=', self.model_id.id]])
table = []
......@@ -251,4 +268,5 @@ class CgscopRigaOdooImport(models.Model):
table=table,
primary_key=model.primary_key,
header_key=model.header_key,
resync=True)
resync=True,
log_id=self)
......@@ -42,6 +42,7 @@
<field name="is_warning" readonly="1" />
<field name="is_error" readonly="1" />
<field name="is_resync" readonly="1" />
<field name="write_date" readonly="1" />
</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