From 3029d0d5258f779adc51f7f36715f861225c7737 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 24 Mar 2014 13:51:16 +0100 Subject: [PATCH] add related media download view - fix #156 --- telemeta/templates/telemeta/inc/mediaitem_related.html | 6 +++--- telemeta/urls.py | 3 ++- telemeta/views/item.py | 10 +++++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/telemeta/templates/telemeta/inc/mediaitem_related.html b/telemeta/templates/telemeta/inc/mediaitem_related.html index 0ab107d7..f4de8343 100644 --- a/telemeta/templates/telemeta/inc/mediaitem_related.html +++ b/telemeta/templates/telemeta/inc/mediaitem_related.html @@ -41,14 +41,14 @@
{% trans "Credits" %}
{{ media.credits }}
{% dl_field media "mime_type" %} -
{% trans "URL" %}
+
{% trans "Download" %}
{% if media.url %} {{ media.url }} {% else %} {% if media.file %} - - {% url telemeta-item-related item.public_id media.id %} + + {{ media.file|get_filename }} {% endif %} {% endif %} diff --git a/telemeta/urls.py b/telemeta/urls.py index a8774bfd..88154c40 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -122,7 +122,8 @@ urlpatterns = patterns('', url(r'^archives/items/(?P[A-Za-z0-9._-]+)/keywords/$', item_view.item_keywords_edit, dict(template='telemeta/mediaitem_keywords_edit.html'), name="telemeta-item-keywords_edit"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/delete/$', item_view.item_delete, name="telemeta-item-delete"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)$', item_view.related_media_item_stream, name="telemeta-item-related"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', item_view.related_media_item_stream, name="telemeta-item-related"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', item_view.related_media_item_download, name="telemeta-item-related-download"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related_edit/$', item_view.related_media_edit, dict(template='telemeta/mediaitem_related_edit.html'), name="telemeta-item-related_edit"), # Markers url(r'^archives/markers/(?P[A-Za-z0-9]+)/$', item_view.item_detail, name="telemeta-item-detail-marker"), diff --git a/telemeta/views/item.py b/telemeta/views/item.py index 99329d60..11c2d726 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -218,8 +218,16 @@ class ItemView(object): def related_media_item_stream(self, request, item_public_id, media_id): item = MediaItem.objects.get(public_id=item_public_id) media = MediaItemRelated.objects.get(item=item, id=media_id) + filename = media.file.path.split(os.sep)[-1] response = HttpResponse(stream_from_file(media.file.path), mimetype=media.mime_type) -# response['Content-Disposition'] = 'attachment; '+'filename='+media.title+'.'+ext + return response + + def related_media_item_download(self, request, item_public_id, media_id): + item = MediaItem.objects.get(public_id=item_public_id) + media = MediaItemRelated.objects.get(item=item, id=media_id) + filename = media.file.path.split(os.sep)[-1] + response = HttpResponse(stream_from_file(media.file.path), mimetype=media.mime_type) + response['Content-Disposition'] = 'attachment; ' + 'filename=' + filename return response @method_decorator(permission_required('telemeta.change_mediaitem')) -- 2.39.5