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