59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
"""
|
|
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
|