From 81dbb1c13d52137504629d909582b3488068ce3e Mon Sep 17 00:00:00 2001 From: Juliana <juliana@le-filament.com> Date: Wed, 20 Jul 2022 11:59:01 +0200 Subject: [PATCH] [ADD]Add function creation virtual folder + Json --- models/api_alfresco.py | 57 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/models/api_alfresco.py b/models/api_alfresco.py index 9c3bbc5..825a163 100644 --- a/models/api_alfresco.py +++ b/models/api_alfresco.py @@ -75,4 +75,59 @@ class LeFilamentAlfresco(models.AbstractModel): res = result.content.decode('utf8').replace("'", '"') data = json.loads(res) nodeDoc = data.get('results')[0].get('nodeRef').replace('workspace://SpacesStore/', '') - return nodeDoc \ No newline at end of file + return nodeDoc + + def create_json_file(self, file_name, virtual_json, json_file_cmis): + """ Crée un dossier virtuel à partir d'un node ref d'un dossier, puis associe + un fichier json sur la propriété "Modèle de dossier intelligent" + + :param file_name: Nom du dossier créé et du fichier JSON + :param virtual_json: fichier json + :param json_file_cmis: Noderef du dossier où créer le dossier virtuel + """ + backend = self.env['cmis.backend'].search([], limit=1) + parent_path = backend.get_cmis_repository().getFolder( + json_file_cmis).getPaths() + + path_to_create = parent_path + [file_name] + path = '/'.join(path_to_create) + + # Création du dossier virtuel + cmis_folder = backend.get_folder_by_path(path) + + js = json.dumps(virtual_json, indent=4) + prop = { + 'cmis:secondaryObjectTypeIds': ['P:adefpat:justificatif'], + } + # Création du JSON + repo = backend.get_cmis_repository().getObject(json_file_cmis) + file = repo.createDocument( + name=file_name + ".json", + properties=prop, + contentFile=js, + contentType="application/json" + ) + noderef_file_id = file.getProperties().get('alfcmis:nodeRef') + + # Mise à jour des propriétés du dossier virtuel + prop_folder = { + 'cmis:secondaryObjectTypeIds': [ + 'P:smf:customConfigSmartFolder', + 'P:cm:taggable', + 'P:up:UploadFolder', + 'P:cm:titled', + 'P:sys:localized' + ], + } + cmis_folder.updateProperties(prop_folder) + + # Association du fichier JSON au dossier virtuel + noderef_folder_id = cmis_folder.getProperties().get('cmis:objectId') + url = '/alfresco/s/api/node/workspace/SpacesStore/' + noderef_folder_id + '/formprocessor' + return self.alfresco_get_by_url( + url=url, + call_type='post', + json={ + "assoc_smf_custom-template-association_added": noderef_file_id + }, + backend=backend) -- GitLab