web/lib/django/contrib/syndication/views.py
changeset 0 0d40e90630ef
child 29 cc9b7e14412b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/django/contrib/syndication/views.py	Wed Jan 20 00:34:04 2010 +0100
@@ -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