From 269281c3f9215d2d6ec0a420cce5bb0f3bf08fd1 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Mon, 26 Sep 2022 17:03:11 +0200 Subject: [PATCH] [add] versioning management on error 409 for push_alfresco_file function --- models/api_alfresco.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/models/api_alfresco.py b/models/api_alfresco.py index 2ea90bd..89098fa 100644 --- a/models/api_alfresco.py +++ b/models/api_alfresco.py @@ -219,7 +219,8 @@ class CgscopAlfresco(models.AbstractModel): _("Le dossier parent n'existe pas ou n'est pas renseigné !") ) - cmis_obj = backend.get_cmis_repository().getObject(folder) + cmis_rep = backend.get_cmis_repository() + cmis_obj = cmis_rep.getObject(folder) _logger.info("Chargement document Alfresco : %s" % name) try: file_upload = cmis_obj.createDocument( @@ -229,10 +230,20 @@ class CgscopAlfresco(models.AbstractModel): contentType="application/pdf", ) return file_upload + except UpdateConflictException: + _logger.info("Le document %s existe déjà dans le dossier spécifié" % name) + # Recherche noderef document existant + children = cmis_obj.getChildren().getResults() + old_cmis_file = list(filter(lambda f: f.name == name, children))[0] + # Création d'une copie de travail du document pour versionnage + pwc = old_cmis_file.checkout() + # Mise à jour de la version + pwc.checkin( + contentFile=file, contentType="application/pdf", properties=metadata + ) except ( ContentAlreadyExistsException, ObjectNotFoundException, - UpdateConflictException, InvalidArgumentException, ) as e: _logger.error(e) -- GitLab