--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/django/contrib/comments/views/utils.py Tue Oct 14 16:00:59 2008 +0000
@@ -0,0 +1,58 @@
+"""
+A few bits of helper functions for comment views.
+"""
+
+import urllib
+import textwrap
+from django.http import HttpResponseRedirect
+from django.core import urlresolvers
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+from django.core.exceptions import ObjectDoesNotExist
+from django.conf import settings
+from django.contrib import comments
+
+def next_redirect(data, default, default_view, **get_kwargs):
+ """
+ Handle the "where should I go next?" part of comment views.
+
+ The next value could be a kwarg to the function (``default``), or a
+ ``?next=...`` GET arg, or the URL of a given view (``default_view``). See
+ the view modules for examples.
+
+ Returns an ``HttpResponseRedirect``.
+ """
+ next = data.get("next", default)
+ if next is None:
+ next = urlresolvers.reverse(default_view)
+ if get_kwargs:
+ next += "?" + urllib.urlencode(get_kwargs)
+ return HttpResponseRedirect(next)
+
+def confirmation_view(template, doc="Display a confirmation view."):
+ """
+ Confirmation view generator for the "comment was
+ posted/flagged/deleted/approved" views.
+ """
+ def confirmed(request):
+ comment = None
+ if 'c' in request.GET:
+ try:
+ comment = comments.get_model().objects.get(pk=request.GET['c'])
+ except ObjectDoesNotExist:
+ pass
+ return render_to_response(template,
+ {'comment': comment},
+ context_instance=RequestContext(request)
+ )
+
+ confirmed.__doc__ = textwrap.dedent("""\
+ %s
+
+ Templates: `%s``
+ Context:
+ comment
+ The posted comment
+ """ % (doc, template)
+ )
+ return confirmed