From 8c504f4514081c0838b5a2662f749e02e4f46540 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Mon, 5 Dec 2022 11:24:50 +0100 Subject: [PATCH] [add] big files download restrictions --- models/api_alfresco.py | 8 ++++++++ wizard/alfresco_download_zip_wizard.py | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/models/api_alfresco.py b/models/api_alfresco.py index b80f809..68735ea 100644 --- a/models/api_alfresco.py +++ b/models/api_alfresco.py @@ -256,6 +256,14 @@ class CgscopAlfresco(models.AbstractModel): url = "/alfresco/s/document/" + nodeRef return self.alfresco_get_by_url(url=url, call_type="delete").json() + def alfresco_delete_download(self, nodeRef): + """ + Supprime un document d'Alfresco + :param nodeRef : nodeRef du document Alfresco + """ + url = "/alfresco/api/-default-/public/alfresco/versions/1/downloads" + nodeRef + return self.alfresco_get_by_url(url=url, call_type="delete").json() + # ------------------------------------------------------ # CMIS Methods # ------------------------------------------------------ diff --git a/wizard/alfresco_download_zip_wizard.py b/wizard/alfresco_download_zip_wizard.py index 1385081..4b7329e 100644 --- a/wizard/alfresco_download_zip_wizard.py +++ b/wizard/alfresco_download_zip_wizard.py @@ -121,10 +121,18 @@ class AlfrescoDownloadZipWizard(models.TransientModel): if not nodes: raise UserError(_("Il n'y a pas de documents associés à cette recherche")) + # Création du noeud de téléchargement download = Alfresco.alfresco_create_download(nodes) download_id = download["entry"].get("id") + # Récupération des données du téléchargement download_get = Alfresco.alfresco_get_download(download_id) download_status = download_get["entry"].get("status") + if download_get["entry"].get("totalBytes") > 838860800: + # Suppression du noeud si la taille est trop élevée + delete_download = Alfresco.alfresco_delete_download(download_id) + logging.info("Alfresco delete download: %s" % delete_download) + raise UserError(_("Le fichier à télécharger est trop volumineux (>800Mo).")) + # Boucle de validation de fin de création du noeud while download_status != "DONE": time.sleep(0.5) download_get = Alfresco.alfresco_get_download(download_id) @@ -155,6 +163,8 @@ class AlfrescoDownloadZipWizard(models.TransientModel): domain.append( ("partner_company_type_id", "in", self.company_type_ids.ids) ) + if self.ur_id: + domain.append(("ur_id", "in", self.ur_id.ids)) if self.is_cae: domain.append(("cae", "=", True)) if self.is_member: -- GitLab