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):
10
8
feed_type = Atom1Feed
12
10
def title(self,obj):
13
11
if obj == self.all_objects:
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')
25
print("franku reverse: ", reverse('pybb_forum', args=(obj.pk,)))
33
26
return "/ewfwevw%s" % reverse('pybb_forum', args=(obj.pk,))
35
def get_object(self,bits):
28
def get_object(self,request, *args, **kwargs):
37
30
Implement getting feeds for a specific subforum
32
if not 'topic_id' in kwargs:
33
# Latest Posts/Topics on all forums
40
34
return self.all_objects
42
forum = Forum.objects.get(pk=int(bits[0]))
36
# Latest Posts/Topics for specific Forum
38
forum=Forum.objects.get(pk=int(kwargs['topic_id']))
44
42
raise ObjectDoesNotExist
46
##########################
47
# Individual items below #
48
##########################
49
def item_id(self, obj):
52
def item_pubdate(self, obj):
44
# Must be used for valid Atom feeds
45
def item_updateddate(self, obj):
55
def item_links(self, item):
56
return [{'href': item.get_absolute_url()}, ]
48
def item_link(self, item):
49
return item.get_absolute_url()
51
# Validated through http://validator.w3.org/feed/
59
52
class LastPosts(PybbFeed):
60
all_title = _('Latest posts on all forums')
61
all_description = _('Latest posts on all forums')
62
one_title = _('Latest topics on forum %s')
63
one_description = _('Latest topics on forum %s')
53
all_title = 'Latest posts on all forums'
54
one_title = 'Latest posts on forum %s'
64
55
title_template = 'pybb/feeds/posts_title.html'
65
56
description_template = 'pybb/feeds/posts_description.html'
67
all_objects = Post.objects
58
all_objects = Post.objects
69
60
def items_for_object(self,obj):
70
61
return Post.objects.filter( topic__forum = obj ).order_by('-created')[:15]
77
68
return item.user.username
70
# Validated through http://validator.w3.org/feed/
80
71
class LastTopics(PybbFeed):
81
all_title = _('Latest topics on all forums')
82
all_description = _('Latest topics on all forums')
83
one_title = _('Latest topics on forum %s')
84
one_description = _('Latest topics on forum %s')
72
all_title = 'Latest topics on all forums'
73
one_title = 'Latest topics on forum %s'
85
74
title_template = 'pybb/feeds/topics_title.html'
86
75
description_template = 'pybb/feeds/topics_description.html'
88
all_objects = Topic.objects
90
def items_for_object(self,obj):
91
return Topic.objects.filter( forum = obj ).order_by('-created')[:15]
77
all_objects = Topic.objects
79
def items_for_object(self,item):
80
return Topic.objects.filter( forum = item ).order_by('-created')[:15]
93
82
def item_author_name(self, item):