from django.contrib.syndication.views import Feed from django.core.urlresolvers import reverse from django.shortcuts import get_object_or_404 from boards.models import Post, Tag, NO_PARENT from neboard import settings __author__ = 'neko259' class AllThreadsFeed(Feed): title = settings.SITE_NAME + ' - All threads' link = '/' description_template = 'boards/rss/post.html' def items(self): return Post.objects.get_threads(order_by='-pub_time') def item_title(self, item): return item.title def item_link(self, item): return reverse('thread', args={item.id}) def item_pubdate(self, item): return item.pub_time class TagThreadsFeed(Feed): link = '/' description_template = 'boards/rss/post.html' def items(self, obj): return Post.objects.get_threads(tag=obj, order_by='-pub_time') def get_object(self, request, tag_name): return get_object_or_404(Tag, name=tag_name) def item_title(self, item): return item.title def item_link(self, item): return reverse('thread', args={item.id}) def item_pubdate(self, item): return item.pub_time def title(self, obj): return obj.name class ThreadPostsFeed(Feed): link = '/' description_template = 'boards/rss/post.html' def items(self, obj): return Post.objects.get_thread(opening_post_id=obj) def get_object(self, request, post_id): return post_id def item_title(self, item): return item.title def item_link(self, item): if NO_PARENT == item.parent: return reverse('thread', args={item.id}) else: return reverse('thread', args={item.parent}) + "#" + str(item.id) def item_pubdate(self, item): return item.pub_time def title(self, obj): return get_object_or_404(Post, id=obj).title