Author: mtredinnick
Date: 2007-05-31 04:04:55 -0500 (Thu, 31 May 2007)
New Revision: 5389
Modified:
django/branches/unicode/django/utils/feedgenerator.py
Log:
unicode: Fixed #4430 -- Handle bytestrings and IRIs more robustly in feed
production. Thanks to Almad and [EMAIL PROTECTED] for some good debugging here.
Modified: django/branches/unicode/django/utils/feedgenerator.py
===================================================================
--- django/branches/unicode/django/utils/feedgenerator.py 2007-05-31
09:03:29 UTC (rev 5388)
+++ django/branches/unicode/django/utils/feedgenerator.py 2007-05-31
09:04:55 UTC (rev 5389)
@@ -19,6 +19,7 @@
"""
from django.utils.xmlutils import SimplerXMLGenerator
+from django.utils.encoding import force_unicode, iri_to_uri
import datetime, re, time
import email.Utils
@@ -41,18 +42,20 @@
def __init__(self, title, link, description, language=None,
author_email=None,
author_name=None, author_link=None, subtitle=None, categories=None,
feed_url=None, feed_copyright=None):
+ if categories:
+ categories = [force_unicode(c) for c in categories]
self.feed = {
- 'title': title,
- 'link': link,
- 'description': description,
- 'language': language,
- 'author_email': author_email,
- 'author_name': author_name,
- 'author_link': author_link,
- 'subtitle': subtitle,
+ 'title': force_unicode(title),
+ 'link': iri_to_uri(link),
+ 'description': force_unicode(description),
+ 'language': force_unicode(language),
+ 'author_email': force_unicode(author_email),
+ 'author_name': force_unicode(author_name),
+ 'author_link': iri_to_uri(author_link),
+ 'subtitle': force_unicode(subtitle),
'categories': categories or (),
- 'feed_url': feed_url,
- 'feed_copyright': feed_copyright,
+ 'feed_url': iri_to_uri(feed_url),
+ 'feed_copyright': force_unicode(feed_copyright),
}
self.items = []
@@ -64,19 +67,21 @@
objects except pubdate, which is a datetime.datetime object, and
enclosure, which is an instance of the Enclosure class.
"""
+ if categories:
+ categories = [force_unicode(c) for c in categories]
self.items.append({
- 'title': title,
- 'link': link,
- 'description': description,
- 'author_email': author_email,
- 'author_name': author_name,
- 'author_link': author_link,
+ 'title': force_unicode(title),
+ 'link': iri_to_uri(link),
+ 'description': force_unicode(description),
+ 'author_email': force_unicode(author_email),
+ 'author_name': force_unicode(author_name),
+ 'author_link': iri_to_uri(author_link),
'pubdate': pubdate,
- 'comments': comments,
- 'unique_id': unique_id,
+ 'comments': force_unicode(comments),
+ 'unique_id': force_unicode(unique_id),
'enclosure': enclosure,
'categories': categories or (),
- 'item_copyright': item_copyright,
+ 'item_copyright': force_unicode(item_copyright),
})
def num_items(self):
@@ -114,7 +119,8 @@
"Represents an RSS enclosure"
def __init__(self, url, length, mime_type):
"All args are expected to be Python Unicode objects"
- self.url, self.length, self.mime_type = url, length, mime_type
+ self.length, self.mime_type = length, mime_type
+ self.url = iri_to_uri(url)
class RssFeed(SyndicationFeed):
mime_type = 'application/rss+xml'
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---