]> git.parisson.com Git - telemeta.git/commitdiff
Add download url for various related media resources
authorGuillaume Pellerin <yomguy@parisson.com>
Wed, 28 May 2014 13:23:31 +0000 (15:23 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Wed, 28 May 2014 13:23:31 +0000 (15:23 +0200)
telemeta/templates/telemeta/inc/collection_related.html
telemeta/templates/telemeta/inc/resource_related.html
telemeta/urls.py
telemeta/views/collection.py
telemeta/views/resource.py

index 1635ceb19393993904bf4ae21f2966f54a2df952..0318bc91dcd454f244aeea774d4f7ad89af0ba21 100644 (file)
                                 {% if media.file %}
                                 <dt>{% trans "Download" %}</dt>
                                 <dd>
-                                    <a href="{% url telemeta-item-related-download item.public_id media.id %}">
+                                    <a href="{% url telemeta-collection-related-download collection.public_id media.id %}">
                                      {{ media.file|get_filename }}
                                     </a>
                                 </dd>
                                 {% endif %}
+                                </dd>
                             </dl>
                             </td>
 
index 8cd50fa192e3f23a0e521dffd3a255bc3a03f572..1354605140b1b76493ab1e06da52b52bef8263ea 100644 (file)
                                 {% if media.file %}
                                 <dt>{% trans "Download" %}</dt>
                                 <dd>
-                                    <a href="{% url telemeta-item-related-download item.public_id media.id %}">
+                                    <a href="{% url telemeta-resource-related-download type resource.code media.id %}">
                                      {{ media.file|get_filename }}
                                     </a>
                                 </dd>
                                 {% endif %}
+                                </dd>
                             </dl>
                             </td>
 
index 6f48b1b54d31170477e8cc88f79d2c7895730e5f..deb519b2d160044584f7efd6a20425803973ccd1 100644 (file)
@@ -165,7 +165,9 @@ urlpatterns = patterns('',
     url(r'^archives/collections/(?P<public_id>[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<public_id>[A-Za-z0-9._-]+)/delete/$', collection_view.collection_delete, name="telemeta-collection-delete"),
-    url(r'^archives/collections/(?P<collection_public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)$', collection_view.related_media_collection_stream, name="telemeta-collection-related"),
+    url(r'^archives/collections/(?P<collection_public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/view/$', collection_view.related_media_collection_stream, name="telemeta-collection-related"),
+    url(r'^archives/collections/(?P<collection_public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/download/$', collection_view.related_media_collection_download, name="telemeta-collection-related-download"),
+
     url(r'^archives/collections/(?P<public_id>[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<type>[A-Za-z0-9._-]+)_add$', resource_view.add,
         dict(template='telemeta/resource_add.html'), name="telemeta-resource-add"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/delete/$', resource_view.delete, name="telemeta-resource-delete"),
-    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)$', resource_view.related_stream, name="telemeta-resource-related"),
+    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/view/$', resource_view.related_stream, name="telemeta-resource-related"),
+    url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"),
     url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[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<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', resource_view.detail,
         {'template': 'telemeta/resource_detail_dc.html'},
index c2c3755c0bb1c75221e8305728faa5f1dafbd07c..3fc561d4d07ac52d72ce57a10e30c4c6c0d9cc4d 100644 (file)
@@ -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)
 
index 6ed26120f2cb63bc5c13a4a0f72cd4c6e4f97732..debaca44955ef881c2f4321c552399e225950037 100644 (file)
@@ -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):