Projet

Général

Profil

Development #53666

Pouvoir définir le nom du fichier attaché retourné par une action de cellule JSON (mode response=raw)

Ajouté par Benjamin Dauvergne il y a presque 3 ans. Mis à jour il y a presque 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
03 mai 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

La solution la plus évidente serait de simplement recopier l'entête content-disposition s'il y en a un, comme on copie l'entête content-type :

diff --git combo/public/views.py combo/public/views.py
index 21e40c1d..f834d523 100644
--- combo/public/views.py
+++ combo/public/views.py
@@ -144,7 +144,10 @@ def ajax_page_cell(request, page_pk, cell_reference):
                 )

         if action_response:
-            return HttpResponse(action_response.content, content_type=action_response.headers['Content-Type'])
+            response = HttpResponse(action_response.content, content_type=action_response.headers['Content-Type'])
+            if 'content-disposition' in action_response.headers:
+                response['Content-Disposition'] = action_response.headers['Content-Disposition']
+            return response

         if not request.is_ajax():
             return HttpResponseRedirect(cell.page.get_online_url())

ou alors pour laisser la main plutôt au template qu'au connecteur faire ça au en laissant une partie libre dans l'URL de la vue ajax:

index 7df37d35..d80c2ffc 100644
--- combo/public/urls.py
+++ combo/public/urls.py
@@ -27,6 +27,11 @@ urlpatterns = [
         views.ajax_page_cell,
         name='combo-public-ajax-page-cell',
     ),
+    url(
+        r'^ajax/cell/(?P<page_pk>\d+)/(?P<cell_reference>[\w_]+-\d+)/(?P<filename>[^/]+)$',
+        views.ajax_page_cell,
+        name='combo-public-ajax-page-cell',
+    ),
     url(r'^snapshot/(?P<pk>\w+)/$', manager_required(views.snapshot), name='combo-snapshot-view'),
     url(r'__style__/$', views.style),
     url(r'__skeleton__/$', views.skeleton),
diff --git combo/public/views.py combo/public/views.py
index 21e40c1d..7d32246c 100644
--- combo/public/views.py
+++ combo/public/views.py
@@ -106,7 +106,7 @@ def modify_global_context(request, ctx):

 @csrf_exempt
-def ajax_page_cell(request, page_pk, cell_reference):
+def ajax_page_cell(request, page_pk, cell_reference, filename=None):
     try:
         page = Page.objects.get(id=page_pk)
     except Page.DoesNotExist:
@@ -144,7 +144,10 @@ def ajax_page_cell(request, page_pk, cell_reference):
                 )

         if action_response:
-            return HttpResponse(action_response.content, content_type=action_response.headers['Content-Type'])
+            response = HttpResponse(action_response.content, content_type=action_response.headers['Content-Type'])
+            if filename:
+                response['Content-Disposition'] = 'attachment'
+            return response

         if not request.is_ajax():
             return HttpResponseRedirect(cell.page.get_online_url())

Fichiers


Demandes liées

Lié à Combo - Development #53720: test_import_export.test_import_export_pwa_navigation en échec après #53666Fermé04 mai 2021

Actions

Révisions associées

Révision d623ff4d (diff)
Ajouté par Benjamin Dauvergne il y a presque 3 ans

jsoncell: copy Content-Disposition in raw cell's actions (#53666)

Historique

#2

Mis à jour par Frédéric Péters il y a presque 3 ans

Plutôt pas la modif à l'url.

#3

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

  • Assigné à mis à Benjamin Dauvergne
#4

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

#5

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

  • Statut changé de Solution proposée à Solution validée
#6

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit d623ff4d8efb8b966babe3ceee14f6b9f9cf2d80
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Mon May 3 13:05:24 2021 +0200

    jsoncell: copy Content-Disposition in raw cell's actions (#53666)
#7

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Lié à Development #53720: test_import_export.test_import_export_pwa_navigation en échec après #53666 ajouté
#8

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF