fixed multithreading bug with attaching to jvm
[wolnelektury.git] / apps / catalogue / feeds.py
index c79e058..836202a 100644 (file)
@@ -5,6 +5,7 @@
 from django.contrib.sites.models import Site
 from django.contrib.syndication.views import Feed
 from django.core.urlresolvers import reverse
 from django.contrib.sites.models import Site
 from django.contrib.syndication.views import Feed
 from django.core.urlresolvers import reverse
+from django.db.models import Q
 
 from catalogue import models
 
 
 from catalogue import models
 
@@ -29,25 +30,31 @@ class AudiobookFeed(Feed):
     }
 
     def get_object(self, request, type):
     }
 
     def get_object(self, request, type):
-        return type
+        return {'type': type, 'all': 'all' in request.GET}
 
 
-    def title(self, type):
-        return self.titles[type]
+    def title(self, args):
+        return self.titles[args['type']]
 
 
-    def link(self, type):
-        return reverse('audiobook_feed', args=(type,))
+    def link(self, args):
+        return reverse('audiobook_feed', args=(args['type'],))
 
 
-    def items(self, type):
+    def items(self, args):
         objects = models.BookMedia.objects.order_by('-uploaded_at')
         if type == 'all':
             objects = objects.filter(type__in=('mp3', 'ogg', 'daisy'))
         else:
         objects = models.BookMedia.objects.order_by('-uploaded_at')
         if type == 'all':
             objects = objects.filter(type__in=('mp3', 'ogg', 'daisy'))
         else:
-            objects = objects.filter(type=type)[:20]
+            objects = objects.filter(type=args['type'])
+        if not args['all']:
+            objects = objects[:50]
         return objects
 
     def item_title(self, item):
         return item.name
 
         return objects
 
     def item_title(self, item):
         return item.name
 
+    def item_categories(self, item):
+        return sorted(set(author.name for author in 
+                            item.book.tags.filter(category='author')))
+
     def item_description(self, item):
         lines = []
         artist = item.get_extra_info_value().get('artist_name', None)
     def item_description(self, item):
         lines = []
         artist = item.get_extra_info_value().get('artist_name', None)
@@ -59,10 +66,7 @@ class AudiobookFeed(Feed):
         return u'<br/>\n'.join(lines)
 
     def item_link(self, item):
         return u'<br/>\n'.join(lines)
 
     def item_link(self, item):
-        if item.book_set.exists():
-            return item.book_set.all()[0].get_absolute_url()
-        else:
-            return item.file.url
+        return item.book.get_absolute_url()
 
     def item_guid(self, item):
         return absolute_url(item.file.url)
 
     def item_guid(self, item):
         return absolute_url(item.file.url)