Fixed #1473 -- Added support for categories back into syndication feeds

(was accidently removed in r1994). Thanks, k.shaposhnikov@gmail.com


git-svn-id: http://code.djangoproject.com/svn/django/trunk@3143 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2006-06-19 01:38:06 +00:00
parent c0ea3284d7
commit a93b1f7ac3
3 changed files with 40 additions and 0 deletions

View File

@ -73,6 +73,7 @@ class Feed(object):
author_name = self.__get_dynamic_attr('author_name', obj), author_name = self.__get_dynamic_attr('author_name', obj),
author_link = self.__get_dynamic_attr('author_link', obj), author_link = self.__get_dynamic_attr('author_link', obj),
author_email = self.__get_dynamic_attr('author_email', obj), author_email = self.__get_dynamic_attr('author_email', obj),
categories = self.__get_dynamic_attr('categories', obj),
) )
try: try:
@ -110,5 +111,6 @@ class Feed(object):
author_name = author_name, author_name = author_name,
author_email = author_email, author_email = author_email,
author_link = author_link, author_link = author_link,
categories = self.__get_dynamic_attr('item_categories', item),
) )
return feed return feed

View File

@ -126,6 +126,8 @@ class RssFeed(SyndicationFeed):
handler.addQuickElement(u"description", self.feed['description']) handler.addQuickElement(u"description", self.feed['description'])
if self.feed['language'] is not None: if self.feed['language'] is not None:
handler.addQuickElement(u"language", self.feed['language']) handler.addQuickElement(u"language", self.feed['language'])
for cat in self.feed['categories']:
handler.addQuickElement(u"category", cat)
self.write_items(handler) self.write_items(handler)
self.endChannelElement(handler) self.endChannelElement(handler)
handler.endElement(u"rss") handler.endElement(u"rss")

View File

@ -439,6 +439,23 @@ This example illustrates all possible attributes and methods for a ``Feed`` clas
author_link = 'http://www.example.com/' # Hard-coded author URL. author_link = 'http://www.example.com/' # Hard-coded author URL.
# CATEGORIES -- One of the following three is optional. The framework
# looks for them in this order. In each case, the method/attribute
# should return an iterable object that returns strings.
def categories(self, obj):
"""
Takes the object returned by get_object() and returns the feed's
categories as iterable over strings.
"""
def categories(self):
"""
Returns the feed's categories as iterable over strings.
"""
categories = ("python", "django") # Hard-coded list of categories.
# ITEMS -- One of the following three is required. The framework looks # ITEMS -- One of the following three is required. The framework looks
# for them in this order. # for them in this order.
@ -602,6 +619,25 @@ This example illustrates all possible attributes and methods for a ``Feed`` clas
item_pubdate = datetime.datetime(2005, 5, 3) # Hard-coded pubdate. item_pubdate = datetime.datetime(2005, 5, 3) # Hard-coded pubdate.
# ITEM CATEGORIES -- It's optional to use one of these three. This is
# a hook that specifies how to get the list of categories for a given
# item. In each case, the method/attribute should return an iterable
# object that returns strings.
def item_categories(self, item):
"""
Takes an item, as returned by items(), and returns the item's
categories.
"""
def item_categories(self):
"""
Returns the categories for every item in the feed.
"""
item_categories = ("python", "django") # Hard-coded categories.
The low-level framework The low-level framework
======================= =======================