~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to pybb/feeds.py

  • Committer: Holger Rapp
  • Date: 2010-09-26 13:30:30 UTC
  • Revision ID: sirver@gmx.de-20100926133030-ceirjf83vde91tyt
Added a simple events model to display dates on the homepage

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
6
 
5
7
from pybb.models import Post, Topic, Forum
6
 
from django.conf import settings
7
 
 
8
8
 
9
9
class PybbFeed(Feed):
10
10
    feed_type = Atom1Feed
11
 
 
12
 
    def title(self, obj):
 
11
   
 
12
    def title(self,obj):
13
13
        if obj == self.all_objects:
14
14
            return self.all_title
15
15
        else:
16
16
            return self.one_title % obj.name
17
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
    
18
24
    def items(self, obj):
19
25
        if obj == self.all_objects:
20
26
            return obj.order_by('-created')[:15]
21
 
        else:
 
27
        else: 
22
28
            return self.items_for_object(obj)
23
29
 
24
 
    def link(self, obj):
 
30
    def link(self,obj):
25
31
        if obj == self.all_objects:
26
32
            return reverse('pybb_index')
27
 
        return '/ewfwevw%s' % reverse('pybb_forum', args=(obj.pk,))
28
 
 
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,))
 
34
   
 
35
    def get_object(self,bits):
 
36
        """
 
37
        Implement getting feeds for a specific subforum
 
38
        """
 
39
        if len(bits) == 0:
33
40
            return self.all_objects
34
 
        else:
35
 
            # Latest Posts/Topics for specific Forum
36
 
            try:
37
 
                forum = Forum.objects.get(pk=int(kwargs['topic_id']))
38
 
                return forum
39
 
            except ValueError:
40
 
                pass
 
41
        if len(bits) == 1:
 
42
            forum =  Forum.objects.get(pk=int(bits[0]))
 
43
            return forum
41
44
        raise ObjectDoesNotExist
 
45
    
 
46
    ##########################
 
47
    # Individual items below #
 
48
    ##########################
 
49
    def item_guid(self, obj):
 
50
        return str(obj.id)
42
51
 
43
 
    # Must be used for valid Atom feeds
44
 
    def item_updateddate(self, obj):
 
52
    def item_pubdate(self, obj):
45
53
        return obj.created
46
 
 
47
 
    def item_link(self, item):
48
 
        return item.get_absolute_url()
49
 
 
50
 
# Validated through http://validator.w3.org/feed/
51
 
 
 
54
    
52
55
 
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'
58
 
 
59
 
    all_objects = Post.objects.exclude(topic__in=Post.hidden_topics.all()).filter(hidden=False)
60
 
 
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]
63
 
 
64
 
# Validated through http://validator.w3.org/feed/
 
63
    
 
64
    all_objects = Post.objects 
 
65
    
 
66
    def items_for_object(self,obj):
 
67
        return Post.objects.filter( topic__forum = obj ).order_by('-created')[:15]
65
68
 
66
69
 
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'
72
 
 
73
 
    all_objects = Topic.objects.exclude(posts__hidden=True)
74
 
 
75
 
    def items_for_object(self, item):
76
 
        return Topic.objects.exclude(posts__hidden=True).filter(forum=item).order_by('-created')[:15]
 
77
    
 
78
    all_objects = Topic.objects 
 
79
    
 
80
    def items_for_object(self,obj):
 
81
        return Topic.objects.filter( forum = obj ).order_by('-created')[:15]
 
82