diff --git a/models/api_alfresco.py b/models/api_alfresco.py index 2ea90bd1f185ab52097c874113f198dc46197207..89098fa11aac0a4c0e92140c26a5045fce6e674a 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)