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