summaryrefslogtreecommitdiff
path: root/app/lib/django_comments/views
diff options
context:
space:
mode:
Diffstat (limited to 'app/lib/django_comments/views')
-rw-r--r--app/lib/django_comments/views/comments.py37
-rw-r--r--app/lib/django_comments/views/moderation.py89
-rw-r--r--app/lib/django_comments/views/utils.py14
3 files changed, 66 insertions, 74 deletions
diff --git a/app/lib/django_comments/views/comments.py b/app/lib/django_comments/views/comments.py
index b44babf..c441c30 100644
--- a/app/lib/django_comments/views/comments.py
+++ b/app/lib/django_comments/views/comments.py
@@ -1,36 +1,36 @@
from __future__ import absolute_import
from django import http
+from django.apps import apps
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist, ValidationError
-from django.db import models
-from django.shortcuts import render_to_response
-from django.template import RequestContext
+from django.shortcuts import render
from django.template.loader import render_to_string
from django.utils.html import escape
from django.views.decorators.csrf import csrf_protect
+from django.views.decorators.csrf import csrf_exempt
+
from django.views.decorators.http import require_POST
-try:
- from django.apps import apps
-except ImportError:
- from django.db import models as apps
import django_comments
from django_comments import signals
from django_comments.views.utils import next_redirect, confirmation_view
+
class CommentPostBadRequest(http.HttpResponseBadRequest):
"""
Response returned when a comment post is invalid. If ``DEBUG`` is on a
nice-ish error message will be displayed (for debugging purposes), but in
production mode a simple opaque 400 page will be displayed.
"""
+
def __init__(self, why):
super(CommentPostBadRequest, self).__init__()
if settings.DEBUG:
self.content = render_to_string("comments/400-debug.html", {"why": why})
+@csrf_exempt
@require_POST
def post_comment(request, next=None, using=None):
"""
@@ -60,16 +60,15 @@ def post_comment(request, next=None, using=None):
"Invalid content_type value: %r" % escape(ctype))
except AttributeError:
return CommentPostBadRequest(
- "The given content-type %r does not resolve to a valid model." % \
- escape(ctype))
+ "The given content-type %r does not resolve to a valid model." % escape(ctype))
except ObjectDoesNotExist:
return CommentPostBadRequest(
- "No object matching content-type %r and object PK %r exists." % \
- (escape(ctype), escape(object_pk)))
+ "No object matching content-type %r and object PK %r exists." % (
+ escape(ctype), escape(object_pk)))
except (ValueError, ValidationError) as e:
return CommentPostBadRequest(
- "Attempting go get content-type %r and object PK %r exists raised %s" % \
- (escape(ctype), escape(object_pk), e.__class__.__name__))
+ "Attempting go get content-type %r and object PK %r exists raised %s" % (
+ escape(ctype), escape(object_pk), e.__class__.__name__))
# Do we want to preview the comment?
preview = "preview" in data
@@ -80,8 +79,7 @@ def post_comment(request, next=None, using=None):
# Check security information
if form.security_errors():
return CommentPostBadRequest(
- "The comment form failed security verification: %s" % \
- escape(str(form.security_errors())))
+ "The comment form failed security verification: %s" % escape(str(form.security_errors())))
# If there are errors or if we requested a preview show the comment
if form.errors or preview:
@@ -96,13 +94,11 @@ def post_comment(request, next=None, using=None):
"comments/%s/preview.html" % model._meta.app_label,
"comments/preview.html",
]
- return render_to_response(
- template_list, {
+ return render(request, template_list, {
"comment": form.data.get("comment", ""),
"form": form,
"next": data.get("next", next),
},
- RequestContext(request, {})
)
# Otherwise create the comment
@@ -119,7 +115,7 @@ def post_comment(request, next=None, using=None):
)
for (receiver, response) in responses:
- if response == False:
+ if response is False:
return CommentPostBadRequest(
"comment_will_be_posted receiver %r killed the comment" % receiver.__name__)
@@ -132,7 +128,8 @@ def post_comment(request, next=None, using=None):
)
return next_redirect(request, fallback=next or 'comments-comment-done',
- c=comment._get_pk_val())
+ c=comment._get_pk_val())
+
comment_done = confirmation_view(
template="comments/posted.html",
diff --git a/app/lib/django_comments/views/moderation.py b/app/lib/django_comments/views/moderation.py
index b35626a..4460569 100644
--- a/app/lib/django_comments/views/moderation.py
+++ b/app/lib/django_comments/views/moderation.py
@@ -1,15 +1,15 @@
from __future__ import absolute_import
-from django import template
from django.conf import settings
from django.contrib.auth.decorators import login_required, permission_required
-from django.shortcuts import get_object_or_404, render_to_response
+from django.shortcuts import get_object_or_404, render
from django.views.decorators.csrf import csrf_protect
import django_comments
from django_comments import signals
from django_comments.views.utils import next_redirect, confirmation_view
+
@csrf_protect
@login_required
def flag(request, comment_id, next=None):
@@ -27,14 +27,12 @@ def flag(request, comment_id, next=None):
if request.method == 'POST':
perform_flag(request, comment)
return next_redirect(request, fallback=next or 'comments-flag-done',
- c=comment.pk)
+ c=comment.pk)
# Render a form on GET
else:
- return render_to_response('comments/flag.html',
- {'comment': comment, "next": next},
- template.RequestContext(request)
- )
+ return render(request, 'comments/flag.html', {'comment': comment, "next": next})
+
@csrf_protect
@permission_required("django_comments.can_moderate")
@@ -55,14 +53,12 @@ def delete(request, comment_id, next=None):
# Flag the comment as deleted instead of actually deleting it.
perform_delete(request, comment)
return next_redirect(request, fallback=next or 'comments-delete-done',
- c=comment.pk)
+ c=comment.pk)
# Render a form on GET
else:
- return render_to_response('comments/delete.html',
- {'comment': comment, "next": next},
- template.RequestContext(request)
- )
+ return render(request, 'comments/delete.html', {'comment': comment, "next": next})
+
@csrf_protect
@permission_required("django_comments.can_moderate")
@@ -83,14 +79,12 @@ def approve(request, comment_id, next=None):
# Flag the comment as approved.
perform_approve(request, comment)
return next_redirect(request, fallback=next or 'comments-approve-done',
- c=comment.pk)
+ c=comment.pk)
# Render a form on GET
else:
- return render_to_response('comments/approve.html',
- {'comment': comment, "next": next},
- template.RequestContext(request)
- )
+ return render(request, 'comments/approve.html', {'comment': comment, "next": next})
+
# The following functions actually perform the various flag/aprove/delete
# actions. They've been broken out into separate functions to that they
@@ -101,40 +95,41 @@ def perform_flag(request, comment):
Actually perform the flagging of a comment from a request.
"""
flag, created = django_comments.models.CommentFlag.objects.get_or_create(
- comment = comment,
- user = request.user,
- flag = django_comments.models.CommentFlag.SUGGEST_REMOVAL
+ comment=comment,
+ user=request.user,
+ flag=django_comments.models.CommentFlag.SUGGEST_REMOVAL
)
signals.comment_was_flagged.send(
- sender = comment.__class__,
- comment = comment,
- flag = flag,
- created = created,
- request = request,
+ sender=comment.__class__,
+ comment=comment,
+ flag=flag,
+ created=created,
+ request=request,
)
+
def perform_delete(request, comment):
flag, created = django_comments.models.CommentFlag.objects.get_or_create(
- comment = comment,
- user = request.user,
- flag = django_comments.models.CommentFlag.MODERATOR_DELETION
+ comment=comment,
+ user=request.user,
+ flag=django_comments.models.CommentFlag.MODERATOR_DELETION
)
comment.is_removed = True
comment.save()
signals.comment_was_flagged.send(
- sender = comment.__class__,
- comment = comment,
- flag = flag,
- created = created,
- request = request,
+ sender=comment.__class__,
+ comment=comment,
+ flag=flag,
+ created=created,
+ request=request,
)
def perform_approve(request, comment):
flag, created = django_comments.models.CommentFlag.objects.get_or_create(
- comment = comment,
- user = request.user,
- flag = django_comments.models.CommentFlag.MODERATOR_APPROVAL,
+ comment=comment,
+ user=request.user,
+ flag=django_comments.models.CommentFlag.MODERATOR_APPROVAL,
)
comment.is_removed = False
@@ -142,24 +137,24 @@ def perform_approve(request, comment):
comment.save()
signals.comment_was_flagged.send(
- sender = comment.__class__,
- comment = comment,
- flag = flag,
- created = created,
- request = request,
+ sender=comment.__class__,
+ comment=comment,
+ flag=flag,
+ created=created,
+ request=request,
)
# Confirmation views.
flag_done = confirmation_view(
- template = "comments/flagged.html",
- doc = 'Displays a "comment was flagged" success page.'
+ template="comments/flagged.html",
+ doc='Displays a "comment was flagged" success page.'
)
delete_done = confirmation_view(
- template = "comments/deleted.html",
- doc = 'Displays a "comment was deleted" success page.'
+ template="comments/deleted.html",
+ doc='Displays a "comment was deleted" success page.'
)
approve_done = confirmation_view(
- template = "comments/approved.html",
- doc = 'Displays a "comment was approved" success page.'
+ template="comments/approved.html",
+ doc='Displays a "comment was approved" success page.'
)
diff --git a/app/lib/django_comments/views/utils.py b/app/lib/django_comments/views/utils.py
index 314ab8c..557e673 100644
--- a/app/lib/django_comments/views/utils.py
+++ b/app/lib/django_comments/views/utils.py
@@ -3,19 +3,20 @@ A few bits of helper functions for comment views.
"""
import textwrap
+
try:
from urllib.parse import urlencode
-except ImportError: # Python 2
+except ImportError: # Python 2
from urllib import urlencode
from django.http import HttpResponseRedirect
-from django.shortcuts import render_to_response, resolve_url
-from django.template import RequestContext
+from django.shortcuts import render, resolve_url
from django.core.exceptions import ObjectDoesNotExist
from django.utils.http import is_safe_url
import django_comments
+
def next_redirect(request, fallback, **get_kwargs):
"""
Handle the "where should I go next?" part of comment views.
@@ -42,11 +43,13 @@ def next_redirect(request, fallback, **get_kwargs):
next += joiner + urlencode(get_kwargs) + anchor
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:
@@ -54,10 +57,7 @@ def confirmation_view(template, doc="Display a confirmation view."):
comment = django_comments.get_model().objects.get(pk=request.GET['c'])
except (ObjectDoesNotExist, ValueError):
pass
- return render_to_response(template,
- {'comment': comment},
- context_instance=RequestContext(request)
- )
+ return render(request, template, {'comment': comment})
confirmed.__doc__ = textwrap.dedent("""\
%s