Flatten the audiobook post data structure.
[wolnelektury.git] / src / catalogue / feeds.py
index 3bf1411..8658c8c 100644 (file)
@@ -1,10 +1,9 @@
-# -*- coding: utf-8 -*-
 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 from django.contrib.sites.models import Site
 from django.contrib.syndication.views import Feed
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 from catalogue import models
 
@@ -29,8 +28,8 @@ class AudiobookFeed(Feed):
         'daisy': 'WolneLektury.pl - audiobooki w formacie DAISY',
     }
 
-    def get_object(self, request, obj_type):
-        return {'type': obj_type, 'all': 'all' in request.GET}
+    def get_object(self, request, type):
+        return {'type': type, 'all': 'all' in request.GET}
 
     def title(self, args):
         return self.titles[args['type']]
@@ -40,6 +39,7 @@ class AudiobookFeed(Feed):
 
     def items(self, args):
         objects = models.BookMedia.objects.order_by('-uploaded_at')
+        objects = objects.filter(book__findable=True)
         if type == 'all':
             objects = objects.filter(type__in=('mp3', 'ogg', 'daisy'))
         else:
@@ -52,18 +52,18 @@ class AudiobookFeed(Feed):
         return item.name
 
     def item_categories(self, item):
-        return sorted(set(author.name for author in
-                      item.book.tags.filter(category='author').iterator()))
+        return sorted(item.book.authors().values_list('name', flat=True))
 
     def item_description(self, item):
         lines = []
-        artist = item.extra_info.get('artist_name', None)
+        extra_info = item.get_extra_info_json()
+        artist = extra_info.get('artist_name', None)
         if artist is not None:
-            lines.append(u'Czyta: %s' % artist)
-        director = item.extra_info.get('director_name', None)
+            lines.append('Czyta: %s' % artist)
+        director = extra_info.get('director_name', None)
         if director is not None:
-            lines.append(u'Reżyseria: %s' % director)
-        return u'<br/>\n'.join(lines)
+            lines.append('Reżyseria: %s' % director)
+        return '<br/>\n'.join(lines)
 
     def item_link(self, item):
         return item.book.get_absolute_url()