aboutsummaryrefslogtreecommitdiff
path: root/weblog/feeds.py
blob: 8510813e018131c69c9339d5c2f20893d790a039 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from django.contrib.syndication.views. import Feed
from django.urls import reverse
from weblog.models import BlogPost, Category, CategoryTranslation
from weblog.apps import SETTINGS as blog_settings
from django.utils.translation import ugettext_lazy as _, pgettext_lazy
from django.utils import translation

class MainFeed(Feed):
    title = _('%(blog_title)s RSS feed') % {'blog_title': blog_settings['blog_title']}
    link = reverse('weblog:Index')
    description = _('Latest blog posts on %(blog_title)s') % {'blog_title': blog_settings['blog_title']}

    def items(self):
        return BlogPost.objects.order_by('-publish_date')[:blog_settings['posts_per_page']]

    def item_title(self, item):
        return item.title

    def item_description(self, item):
        return item.content

class BlogFeed(Feed):

    def get_object(self, request, category_slug=None):
        if category_slug:
            if category_slug != 'misc':
                self.category = Category.objects.get(slug=obj)
                self.category_name = self.category.name
            self.current_language = translation.get_language()
            if self.current_language is None:
                self.current_language = settings.LANGUAGE_CODE
            if IS_MULTILINGUAL and obj != 'misc':
                category_translations = CategoryTranslation.objects.filter(category=category)
                if category_translations.count() > 0:
                    for cat_trans in category_translations:
                        if self.current_language[0:2] == cat_trans.language[0:2]:
                            self.category_name = cat_trans
            elif category_slug == 'misc':
                self.category_name = pgettext_lazy('Posts without category', 'Uncategorized')
                return category_slug
        return None

    def title(self, obj):
        if obj:
            return _('%(blog_title)s\'s %(category_name)s RSS feed') % {'blog_title': blog_settings['blog_title'], 'category_name': self.category_name}
        return _('%(blog_title)s RSS feed') % {'blog_title': blog_settings['blog_title']}

    def link(self, obj):
        if obj:
            return reverse('weblog:CategoryIndex', kwargs={'category_slug': obj})
        return reverse('weblog:Index')

    def description(self, obj):
        if obj:
            return _('Latest %(category_name)s blog posts on %(blog_title)s') % {'blog_title': blog_settings['blog_title'], 'category_name': self.category_name}
        return _('Latest blog posts on %(blog_title)s') % {'blog_title': blog_settings['blog_title']}

    def items(self, obj):
        pass

    def item_title(self, item, obj):
        pass

    def item_description(self, item, obj):
        pass