~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to pybb/feeds.py

  • Committer: franku
  • Date: 2016-05-15 14:41:54 UTC
  • mto: This revision was merged to the branch mainline in revision 409.
  • Revision ID: somal@arcor.de-20160515144154-00m3tiibyxm0nw2w
added the old threadedcomments app as wildelands app

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):
10
8
    feed_type = Atom1Feed
11
 
   
 
9
 
12
10
    def title(self,obj):
13
11
        if obj == self.all_objects:
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
 
        else: 
 
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')
 
25
        print("franku reverse: ", reverse('pybb_forum', args=(obj.pk,)))
33
26
        return "/ewfwevw%s" % reverse('pybb_forum', args=(obj.pk,))
34
 
   
35
 
    def get_object(self,bits):
 
27
 
 
28
    def get_object(self,request, *args, **kwargs):
36
29
        """
37
30
        Implement getting feeds for a specific subforum
38
31
        """
39
 
        if len(bits) == 0:
 
32
        if not 'topic_id' in kwargs:
 
33
            # Latest Posts/Topics on all forums
40
34
            return self.all_objects
41
 
        if len(bits) == 1:
42
 
            forum =  Forum.objects.get(pk=int(bits[0]))
43
 
            return forum
 
35
        else:
 
36
            # Latest Posts/Topics for specific Forum
 
37
            try:
 
38
                forum=Forum.objects.get(pk=int(kwargs['topic_id']))
 
39
                return forum
 
40
            except ValueError:
 
41
                pass
44
42
        raise ObjectDoesNotExist
45
43
    
46
 
    ##########################
47
 
    # Individual items below #
48
 
    ##########################
49
 
    def item_id(self, obj):
50
 
        return str(obj.id)
51
 
 
52
 
    def item_pubdate(self, obj):
 
44
    # Must be used for valid Atom feeds    
 
45
    def item_updateddate(self, obj):
53
46
        return obj.created
54
 
 
55
 
    def item_links(self, item):
56
 
        return [{'href': item.get_absolute_url()}, ]
57
 
 
58
 
 
 
47
    
 
48
    def item_link(self, item):
 
49
        return item.get_absolute_url()
 
50
 
 
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'
66
 
    
67
 
    all_objects = Post.objects 
68
 
    
 
57
 
 
58
    all_objects = Post.objects
 
59
 
69
60
    def items_for_object(self,obj):
70
61
        return Post.objects.filter( topic__forum = obj ).order_by('-created')[:15]
71
62
 
76
67
        """
77
68
        return item.user.username
78
69
 
79
 
 
 
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'
87
76
    
88
 
    all_objects = Topic.objects 
89
 
    
90
 
    def items_for_object(self,obj):
91
 
        return Topic.objects.filter( forum = obj ).order_by('-created')[:15]
 
77
    all_objects = Topic.objects
 
78
 
 
79
    def items_for_object(self,item):
 
80
        return Topic.objects.filter( forum = item ).order_by('-created')[:15]
92
81
 
93
82
    def item_author_name(self, item):
94
83
        """