Mercurial > public > sg101
diff forums/feeds.py @ 581:ee87ea74d46b
For Django 1.4, rearranged project structure for new manage.py.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 05 May 2012 17:10:48 -0500 |
parents | gpp/forums/feeds.py@248dd8dd67f8 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forums/feeds.py Sat May 05 17:10:48 2012 -0500 @@ -0,0 +1,78 @@ +""" +This file contains the feed class for the forums application. + +""" +from django.contrib.syndication.views import Feed +from django.core.exceptions import ObjectDoesNotExist +from django.shortcuts import get_object_or_404 + +from forums.models import Forum, Topic, Post +from core.functions import copyright_str +from forums.latest import get_latest_posts + + +class ForumsFeed(Feed): + """The Feed class for a specific forum""" + + ttl = '60' + author_name = 'Brian Neal' + author_email = 'admin@surfguitar101.com' + + def get_object(self, request, forum_slug): + + if forum_slug: + forum = Forum.objects.get(slug=forum_slug) + # only return public forums + if forum.id not in Forum.objects.public_forum_ids(): + raise ObjectDoesNotExist + return forum + + else: + # return None to indicate we want a combined feed + return None + + def title(self, obj): + if obj is None: + forum_name = 'Combined' + else: + forum_name = obj.name + + return 'SurfGuitar101.com %s Forum Feed' % forum_name + + def link(self, obj): + if obj is None: + bits = '' + else: + bits = obj.slug + '/' + + return '/feeds/forums/' + bits + + def description(self, obj): + if obj is None: + return "User posts to SurfGuitar101.com forums." + return obj.description + + def feed_copyright(self): + return copyright_str() + + def items(self, obj): + forum_id = obj.id if obj else None + return get_latest_posts(forum_id=forum_id) + + def item_title(self, item): + return item['title'] + + def item_description(self, item): + return item['content'] + + def item_author_name(self, item): + return item['author'] + + def item_pubdate(self, item): + return item['pubdate'] + + def item_categories(self, item): + return [item['forum_name']] + + def item_link(self, item): + return item['url']