diff --git a/models/api_alfresco.py b/models/api_alfresco.py index 1d077d8a25110601719c5d9fe9ec6dee96a23239..189bc89c0833fe28f62fedcc81c68ef3f6fd369b 100644 --- a/models/api_alfresco.py +++ b/models/api_alfresco.py @@ -5,7 +5,9 @@ import requests import logging import xml.etree.ElementTree as et -from odoo import models, exceptions, tools +from odoo import models, exceptions, fields +from cmislib.exceptions import ContentAlreadyExistsException, \ + ObjectNotFoundException, UpdateConflictException, InvalidArgumentException _logger = logging.getLogger(__name__) @@ -205,3 +207,45 @@ class CgscopAlfresco(models.AbstractModel): """ return result.get('nodeRef', '').replace( 'workspace://SpacesStore/', '') + + def push_alfresco_file( + self, file, name, partner, type, + context='STD', year=fields.Datetime.now().year): + """ + Ajoute un fichier sur la GED Alfresco + @return: fonction get_partner_files() de res.partner + """ + backend = self.env['cmis.backend'].search([], limit=1) + + if not partner.partner_cmis_folder: + # TODO: commit value on creation because of error + folder = partner.create_cmis_folder() + else: + folder = partner.partner_cmis_folder + + try: + cmis_obj = backend.get_cmis_repository().getObject(folder) + + file_upload = cmis_obj.createDocument( + name=name, + properties={ + 'cmis:objectTypeId': 'D:crm:document', + 'cmis:secondaryObjectTypeIds': ['P:crm:organisme'], + 'crm:type': type, + 'crm:contexte': context, + 'crm:annee': year + }, + contentFile=file, + contentType='application/pdf' + ) + except (ContentAlreadyExistsException, ObjectNotFoundException, + UpdateConflictException, InvalidArgumentException) as e: + _logger.error(e) + raise exceptions.ValidationError("""Erreur de mise à jour Alfresco : + - Code : %s + - Url : %s + - Détail : %s""" % (e.status, e.url, e.details)) + except Exception as e: + raise exceptions.ValidationError(e) + + return file_upload