1
from django.contrib.syndication.views import Feed
2
from django.urls import reverse
1
from django.contrib.syndication.feeds import Feed
2
from django.utils.feedgenerator import Atom1Feed
3
from django.core.urlresolvers import reverse
4
from django.utils.translation import ugettext_lazy as _
3
5
from django.core.exceptions import ObjectDoesNotExist
4
from django.utils.feedgenerator import Atom1Feed
5
7
from pybb.models import Post, Topic, Forum
6
from django.conf import settings
9
9
class PybbFeed(Feed):
10
10
feed_type = Atom1Feed
13
13
if obj == self.all_objects:
14
14
return self.all_title
16
16
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
18
24
def items(self, obj):
19
25
if obj == self.all_objects:
20
26
return obj.order_by('-created')[:15]
22
28
return self.items_for_object(obj)
25
31
if obj == self.all_objects:
26
32
return reverse('pybb_index')
27
return '/ewfwevw%s' % reverse('pybb_forum', args=(obj.pk,))
29
def get_object(self, request, *args, **kwargs):
30
"""Implement getting feeds for a specific subforum."""
31
if not 'topic_id' in kwargs:
32
# Latest Posts/Topics on all forums
33
return reverse('pybb_forum', args=(obj.pk,))
35
def get_object(self,bits):
37
Implement getting feeds for a specific subforum
33
40
return self.all_objects
35
# Latest Posts/Topics for specific Forum
37
forum = Forum.objects.get(pk=int(kwargs['topic_id']))
42
forum = Forum.objects.get(pk=int(bits[0]))
41
44
raise ObjectDoesNotExist
46
##########################
47
# Individual items below #
48
##########################
49
def item_guid(self, obj):
43
# Must be used for valid Atom feeds
44
def item_updateddate(self, obj):
52
def item_pubdate(self, obj):
47
def item_link(self, item):
48
return item.get_absolute_url()
50
# Validated through http://validator.w3.org/feed/
53
56
class LastPosts(PybbFeed):
54
all_title = 'Latest posts on all forums'
55
one_title = 'Latest posts on forum %s'
57
all_title = _('Latest posts on all forums')
58
all_description = _('Latest posts on all forums')
59
one_title = _('Latest topics on forum %s')
60
one_description = _('Latest topics on forum %s')
56
61
title_template = 'pybb/feeds/posts_title.html'
57
62
description_template = 'pybb/feeds/posts_description.html'
59
all_objects = Post.objects.exclude(topic__in=Post.hidden_topics.all()).filter(hidden=False)
61
def items_for_object(self, obj):
62
return Post.objects.exclude(topic__in=Post.hidden_topics.all()).filter(hidden=False, topic__forum=obj).order_by('-created')[:15]
64
# Validated through http://validator.w3.org/feed/
64
all_objects = Post.objects
66
def items_for_object(self,obj):
67
return Post.objects.filter( topic__forum = obj ).order_by('-created')[:15]
67
70
class LastTopics(PybbFeed):
68
all_title = 'Latest topics on all forums'
69
one_title = 'Latest topics on forum %s'
71
all_title = _('Latest topics on all forums')
72
all_description = _('Latest topics on all forums')
73
one_title = _('Latest topics on forum %s')
74
one_description = _('Latest topics on forum %s')
70
75
title_template = 'pybb/feeds/topics_title.html'
71
76
description_template = 'pybb/feeds/topics_description.html'
73
all_objects = Topic.objects.exclude(posts__hidden=True)
75
def items_for_object(self, item):
76
return Topic.objects.exclude(posts__hidden=True).filter(forum=item).order_by('-created')[:15]
78
all_objects = Topic.objects
80
def items_for_object(self,obj):
81
return Topic.objects.filter( forum = obj ).order_by('-created')[:15]