summaryrefslogtreecommitdiffstats
path: root/webapp/django/contrib/syndication/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/django/contrib/syndication/views.py')
-rw-r--r--webapp/django/contrib/syndication/views.py25
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