From 262a4817d1f09961f86a82370472f525eb4dcad1 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 28 May 2014 15:23:31 +0200 Subject: [PATCH] Add download url for various related media resources --- .../templates/telemeta/inc/collection_related.html | 3 ++- .../templates/telemeta/inc/resource_related.html | 3 ++- telemeta/urls.py | 7 +++++-- telemeta/views/collection.py | 14 +++++++++++--- telemeta/views/resource.py | 9 +++++++++ 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/telemeta/templates/telemeta/inc/collection_related.html b/telemeta/templates/telemeta/inc/collection_related.html index 1635ceb1..0318bc91 100644 --- a/telemeta/templates/telemeta/inc/collection_related.html +++ b/telemeta/templates/telemeta/inc/collection_related.html @@ -44,11 +44,12 @@ {% if media.file %}
{% trans "Download" %}
- + {{ media.file|get_filename }}
{% endif %} + diff --git a/telemeta/templates/telemeta/inc/resource_related.html b/telemeta/templates/telemeta/inc/resource_related.html index 8cd50fa1..13546051 100644 --- a/telemeta/templates/telemeta/inc/resource_related.html +++ b/telemeta/templates/telemeta/inc/resource_related.html @@ -44,11 +44,12 @@ {% if media.file %}
{% trans "Download" %}
- + {{ media.file|get_filename }}
{% endif %} + diff --git a/telemeta/urls.py b/telemeta/urls.py index 6f48b1b5..deb519b2 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -165,7 +165,9 @@ urlpatterns = patterns('', url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/add_item/$', item_view.item_add, dict(template='telemeta/mediaitem_add.html'), name="telemeta-collection-additem"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/delete/$', collection_view.collection_delete, name="telemeta-collection-delete"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)$', collection_view.related_media_collection_stream, name="telemeta-collection-related"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', collection_view.related_media_collection_stream, name="telemeta-collection-related"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', collection_view.related_media_collection_download, name="telemeta-collection-related-download"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related_edit/$', collection_view.related_media_edit, dict(template='telemeta/collection_related_edit.html'), name="telemeta-collection-related_edit"), url(r'^archives/collections_sound/$', 'django.views.generic.list_detail.object_list', dict(all_collections_sound, paginate_by=20, template_name="telemeta/collection_list.html"), name="telemeta-collections-sound"), @@ -194,7 +196,8 @@ urlpatterns = patterns('', url(r'^archives/(?P[A-Za-z0-9._-]+)_add$', resource_view.add, dict(template='telemeta/resource_add.html'), name="telemeta-resource-add"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/delete/$', resource_view.delete, name="telemeta-resource-delete"), - url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)$', resource_view.related_stream, name="telemeta-resource-related"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', resource_view.related_stream, name="telemeta-resource-related"), + url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related_edit/$', resource_view.related_edit, dict(template='telemeta/resource_related_edit.html'), name="telemeta-resource-related_edit"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/dc/$', resource_view.detail, {'template': 'telemeta/resource_detail_dc.html'}, diff --git a/telemeta/views/collection.py b/telemeta/views/collection.py index c2c3755c..3fc561d4 100644 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@ -144,6 +144,14 @@ class CollectionView(object): # response['Content-Disposition'] = 'attachment' return response + def related_media_collection_download(self, request, collection_public_id, media_id): + collection = MediaCollection.objects.get(public_id=collection_public_id) + media = MediaCollectionRelated.objects.get(collection=collection, 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_mediacollection')) def related_media_edit(self, request, public_id, template): collection = MediaCollection.objects.get(public_id=public_id) @@ -177,10 +185,10 @@ class CollectionPackageView(View): from telemeta.backup import CollectionSerializer from telemeta.util import zipstream import json - - z = zipstream.ZipFile() + + z = zipstream.ZipFile() cache_data = TelemetaCache(settings.TELEMETA_DATA_CACHE_DIR) - + collection = self.get_object() serializer = CollectionSerializer(collection) diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py index 6ed26120..debaca44 100644 --- a/telemeta/views/resource.py +++ b/telemeta/views/resource.py @@ -168,6 +168,15 @@ class ResourceView(object): response = HttpResponse(stream_from_file(media.file.path), mimetype=media.mime_type) return response + def related_download(self, request, type, public_id, media_id): + self.setup(type) + resource = self.model.objects.get(code=public_id) + media = self.related.objects.get(resource=resource, 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 + @jsonrpc_method('telemeta.add_fonds_related_media') @jsonrpc_method('telemeta.add_corpus_related_media') def related_edit(self, request, type, public_id, template): -- 2.39.5