rss.py
80 lines
| 2.0 KiB
| text/x-python
|
PythonLexer
/ boards / rss.py
neko259
|
r89 | from django.contrib.syndication.views import Feed | ||
from django.core.urlresolvers import reverse | ||||
from django.shortcuts import get_object_or_404 | ||||
neko259
|
r596 | from boards.models import Post, Tag, Thread | ||
neko259
|
r89 | from neboard import settings | ||
__author__ = 'neko259' | ||||
neko259
|
r333 | |||
neko259
|
r203 | # TODO Make tests for all of these | ||
class AllThreadsFeed(Feed): | ||||
neko259
|
r89 | |||
title = settings.SITE_NAME + ' - All threads' | ||||
link = '/' | ||||
description_template = 'boards/rss/post.html' | ||||
def items(self): | ||||
neko259
|
r596 | return Thread.objects.filter(archived=False).order_by('-id') | ||
neko259
|
r89 | |||
def item_title(self, item): | ||||
neko259
|
r400 | return item.get_opening_post().title | ||
neko259
|
r89 | |||
def item_link(self, item): | ||||
neko259
|
r626 | return reverse('thread', args={item.get_opening_post_id()}) | ||
neko259
|
r89 | |||
def item_pubdate(self, item): | ||||
neko259
|
r419 | return item.get_pub_time() | ||
neko259
|
r89 | |||
class TagThreadsFeed(Feed): | ||||
neko259
|
r203 | |||
neko259
|
r89 | link = '/' | ||
description_template = 'boards/rss/post.html' | ||||
def items(self, obj): | ||||
neko259
|
r596 | return obj.threads.filter(archived=False).order_by('-id') | ||
neko259
|
r89 | |||
def get_object(self, request, tag_name): | ||||
return get_object_or_404(Tag, name=tag_name) | ||||
def item_title(self, item): | ||||
neko259
|
r400 | return item.get_opening_post().title | ||
neko259
|
r89 | |||
def item_link(self, item): | ||||
neko259
|
r626 | return reverse('thread', args={item.get_opening_post_id()}) | ||
neko259
|
r89 | |||
def item_pubdate(self, item): | ||||
neko259
|
r402 | return item.get_pub_time() | ||
neko259
|
r89 | |||
def title(self, obj): | ||||
return obj.name | ||||
class ThreadPostsFeed(Feed): | ||||
neko259
|
r203 | |||
neko259
|
r89 | link = '/' | ||
description_template = 'boards/rss/post.html' | ||||
def items(self, obj): | ||||
neko259
|
r626 | return obj.get_thread().get_replies() | ||
neko259
|
r89 | |||
def get_object(self, request, post_id): | ||||
neko259
|
r580 | return get_object_or_404(Post, id=post_id) | ||
neko259
|
r89 | |||
def item_title(self, item): | ||||
return item.title | ||||
def item_link(self, item): | ||||
neko259
|
r402 | if not item.is_opening(): | ||
neko259
|
r626 | return reverse('thread', args={ | ||
item.get_thread().get_opening_post_id() | ||||
}) + "#" + str(item.id) | ||||
neko259
|
r203 | else: | ||
neko259
|
r89 | return reverse('thread', args={item.id}) | ||
def item_pubdate(self, item): | ||||
return item.pub_time | ||||
def title(self, obj): | ||||
neko259
|
r580 | return obj.title | ||