From 0f6de68c68fc6ae67e19304b0f894fb3902dad8b Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Wed, 21 Jul 2021 17:42:17 +0200 Subject: [PATCH] [update] alfresco errors on write & unlink --- models/res_partner.py | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/models/res_partner.py b/models/res_partner.py index 7bed4c5..4bfbf2e 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -1,9 +1,15 @@ # Copyright 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import logging + from odoo import api, models -from odoo.exceptions import UserError +from odoo.exceptions import UserError, ValidationError from odoo.addons.cmis_field import fields +from cmislib.exceptions import ContentAlreadyExistsException, \ + ObjectNotFoundException, UpdateConflictException, InvalidArgumentException + +_logger = logging.getLogger(__name__) ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number', 'ur_id'] @@ -73,22 +79,35 @@ class AlfodooResPartner(models.Model): for record in self: if record.is_cooperative and record.partner_cmis_folder: if is_alfresco_field: - backend = self._fields['partner_cmis_folder'] - properties = self._get_folder_properties( - record, backend).get(record.id) - if vals.get('name', False): - properties.update({'cmis:name': record.name}) - folder = backend.get_cmis_object(record) - folder.updateProperties(properties) + try: + backend = self._fields['partner_cmis_folder'] + properties = self._get_folder_properties( + record, backend).get(record.id) + if vals.get('name', False): + properties.update({'cmis:name': record.name}) + folder = backend.get_cmis_object(record) + folder.updateProperties(properties) + except (ContentAlreadyExistsException, ObjectNotFoundException, + UpdateConflictException, InvalidArgumentException) as e: + _logger.error(e) + raise ValidationError("""Erreur de mise à jour Alfresco : + - Code : %s + - Url : %s + - Détail : %s""" % (e.status, e.url, e.details)) + except Exception as e: + raise ValidationError(e) return result @api.multi def unlink(self): for partner in self: if partner.partner_cmis_folder: - backend = self._fields['partner_cmis_folder'] - folder = backend.get_cmis_object(partner) - folder.delete() + try: + backend = self._fields['partner_cmis_folder'] + folder = backend.get_cmis_object(partner) + folder.delete() + except Exception as e: + _logger.error(e) partner.partner_cmis_folder = False return super(AlfodooResPartner, self).unlink() -- GitLab