~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to pybb/feeds.py

  • Committer: franku
  • Date: 2016-07-02 12:38:06 UTC
  • mfrom: (404.2.56 widelands)
  • Revision ID: somal@arcor.de-20160702123806-q69u3d48s1prrxds
merged the django1_8 branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
6
 
 
 
4
from django.utils.feedgenerator import Atom1Feed
7
5
from pybb.models import Post, Topic, Forum
8
6
 
9
7
class PybbFeed(Feed):
14
12
            return self.all_title
15
13
        else:
16
14
            return self.one_title % obj.name
17
 
 
18
 
    def description(self,obj):
19
 
        if obj == self.all_objects:
20
 
            return self.all_description
21
 
        else:
22
 
            return self.one_description % obj.name
23
 
 
 
15
        
24
16
    def items(self, obj):
25
17
        if obj == self.all_objects:
26
18
            return obj.order_by('-created')[:15]
27
19
        else:
28
20
            return self.items_for_object(obj)
29
 
 
 
21
        
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,))
34
26
 
35
 
    def get_object(self,bits):
 
27
    def get_object(self,request, *args, **kwargs):
36
28
        """
37
29
        Implement getting feeds for a specific subforum
38
30
        """
39
 
        if len(bits) == 0:
 
31
        if not 'topic_id' in kwargs:
 
32
            # Latest Posts/Topics on all forums
40
33
            return self.all_objects
41
 
        if len(bits) == 1:
 
34
        else:
 
35
            # Latest Posts/Topics for specific Forum
42
36
            try:
43
 
                forum=Forum.objects.get(pk=int(bits[0]))
 
37
                forum=Forum.objects.get(pk=int(kwargs['topic_id']))
44
38
                return forum
45
39
            except ValueError:
46
40
                pass
47
41
        raise ObjectDoesNotExist
48
 
 
49
 
    ##########################
50
 
    # Individual items below #
51
 
    ##########################
52
 
    def item_id(self, obj):
53
 
        return str(obj.id)
54
 
 
55
 
    def item_pubdate(self, obj):
 
42
    
 
43
    # Must be used for valid Atom feeds    
 
44
    def item_updateddate(self, obj):
56
45
        return obj.created
57
 
 
58
 
    def item_links(self, item):
59
 
        return [{'href': item.get_absolute_url()}, ]
60
 
 
61
 
 
 
46
    
 
47
    def item_link(self, item):
 
48
        return item.get_absolute_url()
 
49
 
 
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'
69
56
 
79
66
        """
80
67
        return item.user.username
81
68
 
82
 
 
 
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'
90
 
 
 
75
    
91
76
    all_objects = Topic.objects
92
77
 
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]
95
80
 
96
81
    def item_author_name(self, item):
97
82
        """