diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0d20b64
diff --git a/django/contrib/comments/views/moderation.py b/django/contrib/comments/views/moderation.py
index 3334b09..72ed103 100644
a
|
b
|
def flag(request, comment_id, next=None):
|
34 | 34 | created = created, |
35 | 35 | request = request, |
36 | 36 | ) |
37 | | return next_redirect(request.POST.copy(), next, flag_done, c=comment.pk) |
| 37 | if request.POST.has_key('next'): |
| 38 | next = request.POST.get('next') |
| 39 | elif request.GET.has_key('next'): |
| 40 | next = request.GET.get('next') |
| 41 | return next_redirect(request.POST.copy(),next, flag_done, c=comment.pk) |
38 | 42 | |
39 | 43 | # Render a form on GET |
40 | 44 | else: |
| 45 | next = request.GET.get('next') |
41 | 46 | return render_to_response('comments/flag.html', |
42 | 47 | {'comment': comment, "next": next}, |
43 | 48 | template.RequestContext(request) |
… |
… |
def delete(request, comment_id, next=None):
|
74 | 79 | created = created, |
75 | 80 | request = request, |
76 | 81 | ) |
| 82 | if request.POST.has_key('next'): |
| 83 | next = request.POST.get('next') |
| 84 | elif request.GET.has_key('next'): |
| 85 | next = request.GET.get('next') |
77 | 86 | return next_redirect(request.POST.copy(), next, delete_done, c=comment.pk) |
78 | 87 | |
79 | 88 | # Render a form on GET |
80 | 89 | else: |
| 90 | next = request.GET.get('next') |
81 | 91 | return render_to_response('comments/delete.html', |
82 | 92 | {'comment': comment, "next": next}, |
83 | 93 | template.RequestContext(request) |
… |
… |
def delete(request, comment_id, next=None):
|
85 | 95 | delete = permission_required("comments.can_moderate")(delete) |
86 | 96 | |
87 | 97 | #@permission_required("comments.can_moderate") |
88 | | def approve(request, comment_id, next=None): |
| 98 | def approve(request, comment_id): |
89 | 99 | """ |
90 | 100 | Approve a comment (that is, mark it as public and non-removed). Confirmation |
91 | 101 | on GET, action on POST. Requires the "can moderate comments" permission. |
… |
… |
def approve(request, comment_id, next=None):
|
117 | 127 | created = created, |
118 | 128 | request = request, |
119 | 129 | ) |
120 | | return next_redirect(request.POST.copy(), next, approve_done, c=comment.pk) |
| 130 | return next_redirect(request.POST.copy(), None, approve_done, c=comment.pk) |
121 | 131 | |
122 | 132 | # Render a form on GET |
123 | 133 | else: |
| 134 | next = request.GET.get('next') |
124 | 135 | return render_to_response('comments/approve.html', |
125 | 136 | {'comment': comment, "next": next}, |
126 | 137 | template.RequestContext(request) |
diff --git a/tests/regressiontests/comment_tests/tests/moderation_view_tests.py b/tests/regressiontests/comment_tests/tests/moderation_view_tests.py
index b9eadd7..c79c006 100644
a
|
b
|
from django.contrib.auth.models import User, Permission
|
3 | 3 | from django.contrib.contenttypes.models import ContentType |
4 | 4 | from regressiontests.comment_tests.tests import CommentTestCase |
5 | 5 | from django.contrib.comments import signals |
6 | | |
| 6 | from django.contrib.comments.views.moderation import delete |
| 7 | import re |
7 | 8 | class FlagViewTests(CommentTestCase): |
8 | 9 | |
9 | 10 | def testFlagGet(self): |
… |
… |
class DeleteViewTests(CommentTestCase):
|
92 | 93 | self.client.login(username="normaluser", password="normaluser") |
93 | 94 | response = self.client.post("/delete/%d/" % pk) |
94 | 95 | self.assertEqual(response["Location"], "http://testserver/deleted/?c=%d" % pk) |
| 96 | |
| 97 | response = self.client.post("/delete/%d/" % pk,{"next":"/somewhere/else/"}) |
| 98 | location = response["Location"] |
| 99 | match = re.search(r"^http://testserver/somewhere/else/\?c=\d+$", location) |
| 100 | self.failUnless(match != None, "Unexpected redirect location: %s" % location) |
95 | 101 | c = Comment.objects.get(pk=pk) |
96 | 102 | self.failUnless(c.is_removed) |
97 | 103 | self.assertEqual(c.flags.filter(flag=CommentFlag.MODERATOR_DELETION, user__username="normaluser").count(), 1) |
… |
… |
class DeleteViewTests(CommentTestCase):
|
106 | 112 | |
107 | 113 | # Post a comment and check the signals |
108 | 114 | self.testDeletePost() |
109 | | self.assertEqual(received_signals, [signals.comment_was_flagged]) |
| 115 | self.assertEqual(received_signals, [signals.comment_was_flagged,signals.comment_was_flagged]) |
110 | 116 | |
111 | 117 | def testDeletedView(self): |
112 | 118 | comments = self.createSomeComments() |
113 | 119 | pk = comments[0].pk |
114 | 120 | response = self.client.get("/deleted/", data={"c":pk}) |
115 | 121 | self.assertTemplateUsed(response, "comments/deleted.html") |
| 122 | |
| 123 | def testDeletedViewNextGet(self): |
| 124 | comments = self.createSomeComments() |
| 125 | pk = comments[0].pk |
| 126 | makeModerator("normaluser") |
| 127 | self.client.login(username="normaluser", password="normaluser") |
| 128 | response = self.client.get("/delete/%d/" % pk, data={"next":"/somewhere/else"}) |
| 129 | self.assertEqual(response.context[1]['next'],"/somewhere/else") |
| 130 | self.assertTemplateUsed(response, "comments/delete.html") |
| 131 | |
116 | 132 | |
117 | 133 | class ApproveViewTests(CommentTestCase): |
118 | 134 | |
diff --git a/tests/regressiontests/comment_tests/urls.py b/tests/regressiontests/comment_tests/urls.py
index 0058689..c183102 100644
a
|
b
|
urlpatterns = patterns('regressiontests.comment_tests.custom_comments.views',
|
5 | 5 | url(r'^flag/(\d+)/$', 'custom_flag_comment'), |
6 | 6 | url(r'^delete/(\d+)/$', 'custom_delete_comment'), |
7 | 7 | url(r'^approve/(\d+)/$', 'custom_approve_comment'), |
| 8 | |
8 | 9 | ) |
9 | | |