1
from django.contrib.syndication.feeds import Feed
1
from django.contrib.syndication.views import Feed
2
2
from django.core.urlresolvers import reverse
3
from django.utils.translation import ugettext_lazy as _
4
3
from django.core.exceptions import ObjectDoesNotExist
5
from django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed
4
from django.utils.feedgenerator import Atom1Feed
7
5
from pybb.models import Post, Topic, Forum
9
7
class PybbFeed(Feed):
14
12
return self.all_title
16
14
return self.one_title % obj.name
18
def description(self,obj):
19
if obj == self.all_objects:
20
return self.all_description
22
return self.one_description % obj.name
24
16
def items(self, obj):
25
17
if obj == self.all_objects:
26
18
return obj.order_by('-created')[:15]
28
20
return self.items_for_object(obj)
30
22
def link(self, obj):
31
23
if obj == self.all_objects:
32
24
return reverse('pybb_index')
33
25
return "/ewfwevw%s" % reverse('pybb_forum', args=(obj.pk,))
35
def get_object(self,bits):
27
def get_object(self,request, *args, **kwargs):
37
29
Implement getting feeds for a specific subforum
31
if not 'topic_id' in kwargs:
32
# Latest Posts/Topics on all forums
40
33
return self.all_objects
35
# Latest Posts/Topics for specific Forum
43
forum=Forum.objects.get(pk=int(bits[0]))
37
forum=Forum.objects.get(pk=int(kwargs['topic_id']))
47
41
raise ObjectDoesNotExist
49
##########################
50
# Individual items below #
51
##########################
52
def item_id(self, obj):
55
def item_pubdate(self, obj):
43
# Must be used for valid Atom feeds
44
def item_updateddate(self, obj):
58
def item_links(self, item):
59
return [{'href': item.get_absolute_url()}, ]
47
def item_link(self, item):
48
return item.get_absolute_url()
50
# Validated through http://validator.w3.org/feed/
62
51
class LastPosts(PybbFeed):
63
all_title = _('Latest posts on all forums')
64
all_description = _('Latest posts on all forums')
65
one_title = _('Latest topics on forum %s')
66
one_description = _('Latest topics on forum %s')
52
all_title = 'Latest posts on all forums'
53
one_title = 'Latest posts on forum %s'
67
54
title_template = 'pybb/feeds/posts_title.html'
68
55
description_template = 'pybb/feeds/posts_description.html'
80
67
return item.user.username
69
# Validated through http://validator.w3.org/feed/
83
70
class LastTopics(PybbFeed):
84
all_title = _('Latest topics on all forums')
85
all_description = _('Latest topics on all forums')
86
one_title = _('Latest topics on forum %s')
87
one_description = _('Latest topics on forum %s')
71
all_title = 'Latest topics on all forums'
72
one_title = 'Latest topics on forum %s'
88
73
title_template = 'pybb/feeds/topics_title.html'
89
74
description_template = 'pybb/feeds/topics_description.html'
91
76
all_objects = Topic.objects
93
def items_for_object(self,obj):
94
return Topic.objects.filter( forum = obj ).order_by('-created')[:15]
78
def items_for_object(self,item):
79
return Topic.objects.filter( forum = item ).order_by('-created')[:15]
96
81
def item_author_name(self, item):