From 13a762341f349e5a9aa17c049cb0803d12f4408d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?= Date: Wed, 20 Jun 2018 06:26:37 +0300 Subject: added feed class, have to finish adding functions for items --- setup.py | 2 +- weblog/feeds.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 weblog/feeds.py diff --git a/setup.py b/setup.py index 8aa8e04..fc5bb54 100755 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) setup( name='django-weblog', - version='0.3.1', + version='0.3-rss.2', packages=find_packages(), include_package_data=True, license='BSD License', diff --git a/weblog/feeds.py b/weblog/feeds.py new file mode 100644 index 0000000..8510813 --- /dev/null +++ b/weblog/feeds.py @@ -0,0 +1,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 -- cgit v1.2.3