diff --git a/models/res_partner.py b/models/res_partner.py index 7bed4c57aae7eb0454b601e11a1001c541bd2539..4bfbf2eaf174dd78cb4eef2ba2eb0af191236329 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()