]> git.parisson.com Git - telemeta.git/commitdiff
add playlist csv collections export
authoryomguy <yomguy@parisson.com>
Thu, 31 Mar 2011 09:36:20 +0000 (11:36 +0200)
committeryomguy <yomguy@parisson.com>
Thu, 31 Mar 2011 09:36:20 +0000 (11:36 +0200)
telemeta/templates/telemeta_default/home.html
telemeta/urls.py
telemeta/web/base.py

index ce33135e3e70e72592dba74eecaf24332eb6feba..44be77731f0d6c4b140d93c1ef30c1daa56eebd8 100644 (file)
@@ -71,8 +71,9 @@
   <table class="listing" style="width:90%;margin-top: 3em">
       <tr>
           <td style="border-bottom:1px solid #6A0307;color:#6A0307;font-size: 100%">{{ playlist.playlist.title }}</td>
-          <td style="width:33ex; padding-right: 0; border-bottom:1px solid #6A0307; text-align:right">
-            <a href="{% url telemeta-playlist-csv-export playlist.playlist.public_id %}" class="component_icon button icon_csv">CSV</a>
+          <td style="width:66ex; padding-right: 0; border-bottom:1px solid #6A0307; text-align:right">
+            <a href="{% url telemeta-playlist-csv-export playlist.playlist.public_id 'collections' %}" class="component_icon button icon_csv">CSV Collections</a>
+            <a href="{% url telemeta-playlist-csv-export playlist.playlist.public_id 'items' %}" class="component_icon button icon_csv">CSV Items</a>
             <a href="#" id="{{playlist.playlist.public_id}}" onclick="playlistUtils.remove(this.id);return false;" class="component_icon button icon_cancel">{% trans "Delete" %}</a>
           </td>
       </tr>
index cbeaf87e8a1ca1eac22a465d0b45a1bf964ccccd..72380f5c75ee050b278f97fcdcd1e33cbf1afb23 100644 (file)
@@ -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<marker_id>[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<method>[a-zA-Z0-9.]+)$', jsonrpc_site.dispatch),  # for HTTP GET only, also omissible
     
     # Playlists
-    url(r'^playlists/(?P<public_id>[a-zA-Z0-9]+)/csv/$', web_view.playlist_csv_export, name="telemeta-playlist-csv-export"),
+    url(r'^playlists/(?P<public_id>[a-zA-Z0-9]+)/(?P<resource_type>[a-zA-Z0-9]+)/csv/$', web_view.playlist_csv_export, name="telemeta-playlist-csv-export"),
     
-    # Markers
-    url(r'^markers/(?P<marker_id>[A-Za-z0-9]+)/$', web_view.item_detail, name="telemeta-item-detail-marker"),
-        
     # RSS feeds
     url(r'^rss/$', web_view.rss, name="telemeta-rss"),
     
index cd19b2e8fc1977e0d2f78553036207942a8dc67d..cbf73aafeae188e577af03dc41a6757371b47cce 100644 (file)
@@ -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')