diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-10-03 19:22:16 -0300 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-10-03 19:22:16 -0300 |
commit | 5045ba6520c1f06938d6a5cb6be448223f116541 (patch) | |
tree | 362289ec9415eb3d15553f22d98d99d800acd47a | |
parent | eec4df8eff641f443313df2e6e6ceb9fe7a2261a (diff) | |
parent | a822dec80256a53ba9770be2c9e5cf8ce48bfca1 (diff) | |
download | askbot-5045ba6520c1f06938d6a5cb6be448223f116541.tar.gz askbot-5045ba6520c1f06938d6a5cb6be448223f116541.tar.bz2 askbot-5045ba6520c1f06938d6a5cb6be448223f116541.zip |
Merge branch 'sayanchowdhury'
-rw-r--r-- | askbot/feed.py | 65 | ||||
-rw-r--r-- | askbot/skins/default/templates/question.html | 6 | ||||
-rw-r--r-- | askbot/urls.py | 5 |
3 files changed, 73 insertions, 3 deletions
diff --git a/askbot/feed.py b/askbot/feed.py index 23416677..c4257ab9 100644 --- a/askbot/feed.py +++ b/askbot/feed.py @@ -14,8 +14,66 @@ #encoding:utf-8 from django.contrib.syndication.feeds import Feed from django.utils.translation import ugettext as _ -from askbot.models import Question +from django.core.exceptions import ObjectDoesNotExist +from askbot.models import Question, Answer, Comment from askbot.conf import settings as askbot_settings +import itertools + +class RssParticularQuestionFeed(Feed): + """rss feed class for particular questions + """ + title = askbot_settings.APP_TITLE + _(' - ')+ _('Particular Question') + link = askbot_settings.APP_URL + description = askbot_settings.APP_DESCRIPTION + copyright = askbot_settings.APP_COPYRIGHT + + def get_object(self, bits): + if len(bits) != 1: + raise ObjectDoesNotExist + return Question.objects.get(id__exact = bits[0]) + + def item_link(self, item): + """get full url to the item + """ + return self.link + item.get_absolute_url() + + def item_pubdate(self, item): + """get date of creation for the item + """ + return item.added_at + + def items(self, item): + """get questions for the feed + """ + results = itertools.chain( + Question.objects.filter(id = item.id), + Answer.objects.filter(question = item.id), + Comment.objects.filter(question = item.id), + ) + return results + + def item_title(self, item): + """returns the title for the item + """ + title = item + if item.__class__.__name__ == "Question": + self.title = item + elif item.__class__.__name__ == "Answer": + title = "Answer by %s for %s " %(item.author,self.title) + elif item.__class__.__name__ == "Comment": + title = "Comment by %s for %s" %(item.user,self.title) + return title + + def item_description(self,item): + """returns the description for the item + """ + if item.__class__.__name__ == "Question": + return item.text + if item.__class__.__name__ == "Answer": + return item.text + elif item.__class__.__name__ == "Comment": + return item.comment + class RssLastestQuestionsFeed(Feed): """rss feed class for the latest questions """ @@ -50,6 +108,11 @@ class RssLastestQuestionsFeed(Feed): because the slug can change """ return self.link + item.get_absolute_url(no_slug = True) + + def item_description(self, item): + """returns the desciption for the item + """ + return item.text def items(self, item): """get questions for the feed diff --git a/askbot/skins/default/templates/question.html b/askbot/skins/default/templates/question.html index 06cd1332..376cd058 100644 --- a/askbot/skins/default/templates/question.html +++ b/askbot/skins/default/templates/question.html @@ -12,6 +12,12 @@ {% endblock %} {% block content %} <h1><a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a></h1> +<p class="rss"> + (<a + href="{{settings.APP_URL}}/feeds/question/{{ question.id }}" + title="{% trans %}subscribe to the questions feed{% endtrans %}" + >{% trans %}rss feed{% endtrans %}</a>) +</p> <table style="width:100%;" id="question-table" {% if question.deleted %}class="deleted"{%endif%}> <tr> <td style="width:30px;vertical-align:top"> diff --git a/askbot/urls.py b/askbot/urls.py index 54c50d96..8b435c56 100644 --- a/askbot/urls.py +++ b/askbot/urls.py @@ -8,7 +8,7 @@ from django.conf.urls.defaults import handler500, handler404 from django.contrib import admin from django.utils.translation import ugettext as _ from askbot import views -from askbot.feed import RssLastestQuestionsFeed +from askbot.feed import RssLastestQuestionsFeed, RssParticularQuestionFeed from askbot.sitemap import QuestionsSitemap from askbot.skins.utils import update_media_revision @@ -16,7 +16,8 @@ admin.autodiscover() update_media_revision()#needs to be run once, so put it here feeds = { - 'rss': RssLastestQuestionsFeed + 'rss': RssLastestQuestionsFeed, + 'question':RssParticularQuestionFeed } sitemaps = { 'questions': QuestionsSitemap |