From 6dd7a95d025197744c6756e7290e90a9be846d47 Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Wed, 21 Sep 2022 14:31:50 +0200
Subject: [PATCH] [add] upload api function

---
 models/api_alfresco.py | 42 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/models/api_alfresco.py b/models/api_alfresco.py
index 43efd6c..2ea90bd 100644
--- a/models/api_alfresco.py
+++ b/models/api_alfresco.py
@@ -26,12 +26,14 @@ class CgscopAlfresco(models.AbstractModel):
     _name = "cgscop.alfresco"
     _description = "Connecteur Alfresco"
 
-    def alfresco_get_by_url(self, url, call_type, json=None):
+    def alfresco_get_by_url(self, url, call_type, json=None, files=None):
         """Création de la requête à Alfresco
 
         :param url: action API Alfresco
         :param call_type: post/get
         :param json: data to post
+        :param files: byte to upload
+        :param data: data to post
 
         @return response au format JSON
         """
@@ -57,6 +59,16 @@ class CgscopAlfresco(models.AbstractModel):
                     alfresco_url + url,
                     auth=basicAuthCredentials,
                     json=json,
+                    files=files,
+                    verify=alfresco_ssl,
+                    timeout=15,
+                )
+            elif call_type == "put":
+                response = requests.put(
+                    alfresco_url + url,
+                    auth=basicAuthCredentials,
+                    data=json,
+                    files=files,
                     verify=alfresco_ssl,
                     timeout=15,
                 )
@@ -232,3 +244,31 @@ class CgscopAlfresco(models.AbstractModel):
             )
         except Exception as e:
             raise exceptions.ValidationError(e)
+
+    def push_alfresco_file_api(self, file, name, metadata=None, folder=None):
+        """
+        Ajoute un fichier sur la GED Alfresco
+        @return: fonction get_partner_files() de res.partner
+        """
+        if not folder:
+            raise exceptions.ValidationError(
+                _("Le dossier parent n'existe pas ou n'est pas renseigné !")
+            )
+
+        # url = "/nodes/%s/children" % folder
+        url = (
+            "/alfresco/api/-default-/public/alfresco/versions/1/nodes/%s/children?majorVersion=true"
+            % folder
+        )
+        _logger.info("Chargement document Alfresco : %s" % name)
+
+        content_type = "multipart/form-data"
+
+        params = {
+            "name": name,
+            "nodeType": "cmis:document",
+            "overwrite": True,
+            "properties": metadata,
+        }
+        files = {"filedata": (name, file, content_type, params)}
+        return self.alfresco_get_by_url(url=url, call_type="post", files=files).json()
-- 
GitLab