From 88bd5f012f9ec751453e84f342ad20424b6cf42b Mon Sep 17 00:00:00 2001 From: yomguy Date: Thu, 31 Mar 2011 11:36:20 +0200 Subject: [PATCH] add playlist csv collections export --- telemeta/templates/telemeta_default/home.html | 5 +- telemeta/urls.py | 8 ++-- telemeta/web/base.py | 48 ++++++++++--------- 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/telemeta/templates/telemeta_default/home.html b/telemeta/templates/telemeta_default/home.html index ce33135e..44be7773 100644 --- a/telemeta/templates/telemeta_default/home.html +++ b/telemeta/templates/telemeta_default/home.html @@ -71,8 +71,9 @@ - diff --git a/telemeta/urls.py b/telemeta/urls.py index cbeaf87e..72380f5c 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -92,6 +92,9 @@ urlpatterns = patterns('', url(r'^item/add/$', web_view.item_add, dict(template='telemeta/mediaitem_add.html'), name="telemeta-item-add"), + # Markers + url(r'^markers/(?P[A-Za-z0-9]+)/$', web_view.item_detail, name="telemeta-item-detail-marker"), + # collections url(r'^collections/$', 'django.views.generic.list_detail.object_list', dict(all_collections, paginate_by=20, @@ -207,11 +210,8 @@ urlpatterns = patterns('', url(r'^json/(?P[a-zA-Z0-9.]+)$', jsonrpc_site.dispatch), # for HTTP GET only, also omissible # Playlists - url(r'^playlists/(?P[a-zA-Z0-9]+)/csv/$', web_view.playlist_csv_export, name="telemeta-playlist-csv-export"), + url(r'^playlists/(?P[a-zA-Z0-9]+)/(?P[a-zA-Z0-9]+)/csv/$', web_view.playlist_csv_export, name="telemeta-playlist-csv-export"), - # Markers - url(r'^markers/(?P[A-Za-z0-9]+)/$', web_view.item_detail, name="telemeta-item-detail-marker"), - # RSS feeds url(r'^rss/$', web_view.rss, name="telemeta-rss"), diff --git a/telemeta/web/base.py b/telemeta/web/base.py index cd19b2e8..cbf73aaf 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -938,40 +938,44 @@ class WebView(object): m = PlaylistResource.objects.get(public_id=public_id) m.delete() - def playlist_csv_export(self, request, public_id): + + def playlist_csv_export(self, request, public_id, resource_type): playlist = Playlist.objects.get(public_id=public_id, author=request.user) resources = PlaylistResource.objects.filter(playlist=playlist) response = HttpResponse(mimetype='text/csv') - response['Content-Disposition'] = 'attachment; filename='+playlist.title+'.csv' + response['Content-Disposition'] = 'attachment; filename='+playlist.title+'_'+resource_type+'.csv' writer = UnicodeWriter(response) - items = [] + elements = [] for resource in resources: - if resource.resource_type == 'collection': - collection = MediaCollection.objects.get(pk=resource.resource_id) - collection_items = MediaItem.objects.filter(collection=collection) - for item in collection_items: - items.append(item) - elif resource.resource_type == 'item': - item = MediaItem.objects.get(pk=resource.resource_id) - items.append(item) - else: - pass - - if items: - item = item.to_dict() - tags = item.keys() + if resource_type == 'items': + if resource.resource_type == 'collection': + collection = MediaCollection.objects.get(pk=resource.resource_id) + collection_items = MediaItem.objects.filter(collection=collection) + for item in collection_items: + elements.append(item) + elif resource.resource_type == 'item': + item = MediaItem.objects.get(pk=resource.resource_id) + elements.append(item) + + elif resource_type == 'collections': + if resource.resource_type == 'collection': + collection = MediaCollection.objects.get(pk=resource.resource_id) + elements.append(collection) + + if elements: + element = elements[0].to_dict() + tags = element.keys() writer.writerow(tags) - import types - for item in items: + for element in elements: data = [] - item = item.to_dict() + element = element.to_dict() for tag in tags: - data.append(item[tag]) + data.append(element[tag]) writer.writerow(data) return response - + def help(self, request): """Render the help page""" template = loader.get_template('telemeta/index.html') -- 2.39.5
{{ playlist.playlist.title }} - CSV + + CSV Collections + CSV Items {% trans "Delete" %}