You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
""" |
|
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
|
|
|