diff -r 6641e941ef1e -r ff1a9aa48cfd app/django/contrib/comments/views/utils.py --- /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