diff options
Diffstat (limited to 'webapp/django/contrib/syndication/views.py')
-rw-r--r-- | webapp/django/contrib/syndication/views.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/webapp/django/contrib/syndication/views.py b/webapp/django/contrib/syndication/views.py new file mode 100644 index 0000000000..423d333991 --- /dev/null +++ b/webapp/django/contrib/syndication/views.py @@ -0,0 +1,25 @@ +from django.contrib.syndication import feeds +from django.http import HttpResponse, Http404 + +def feed(request, url, feed_dict=None): + if not feed_dict: + raise Http404, "No feeds are registered." + + try: + slug, param = url.split('/', 1) + except ValueError: + slug, param = url, '' + + try: + f = feed_dict[slug] + except KeyError: + raise Http404, "Slug %r isn't registered." % slug + + try: + feedgen = f(slug, request).get_feed(param) + except feeds.FeedDoesNotExist: + raise Http404, "Invalid feed parameters. Slug %r is valid, but other parameters, or lack thereof, are not." % slug + + response = HttpResponse(mimetype=feedgen.mime_type) + feedgen.write(response, 'utf-8') + return response |