Ticket #8968: fix_8968_v2.patch

File fix_8968_v2.patch, 5.6 KB (added by Kevin Kubasik, 16 years ago)

Updated Version of Kevins Patch. Still Needs Docs.

  • new file .gitignore

    diff --git a/.gitignore b/.gitignore
    new file mode 100644
    index 0000000..0d20b64
    - +  
     1*.pyc
  • django/contrib/comments/views/moderation.py

    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):  
    3434            created = created,
    3535            request = request,
    3636        )
    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)
    3842
    3943    # Render a form on GET
    4044    else:
     45        next = request.GET.get('next')
    4146        return render_to_response('comments/flag.html',
    4247            {'comment': comment, "next": next},
    4348            template.RequestContext(request)
    def delete(request, comment_id, next=None):  
    7479            created = created,
    7580            request = request,
    7681        )
     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')
    7786        return next_redirect(request.POST.copy(), next, delete_done, c=comment.pk)
    7887
    7988    # Render a form on GET
    8089    else:
     90        next = request.GET.get('next')
    8191        return render_to_response('comments/delete.html',
    8292            {'comment': comment, "next": next},
    8393            template.RequestContext(request)
    def delete(request, comment_id, next=None):  
    8595delete = permission_required("comments.can_moderate")(delete)
    8696
    8797#@permission_required("comments.can_moderate")
    88 def approve(request, comment_id, next=None):
     98def approve(request, comment_id):
    8999    """
    90100    Approve a comment (that is, mark it as public and non-removed). Confirmation
    91101    on GET, action on POST. Requires the "can moderate comments" permission.
    def approve(request, comment_id, next=None):  
    117127            created = created,
    118128            request = request,
    119129        )
    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)
    121131
    122132    # Render a form on GET
    123133    else:
     134        next = request.GET.get('next')
    124135        return render_to_response('comments/approve.html',
    125136            {'comment': comment, "next": next},
    126137            template.RequestContext(request)
  • tests/regressiontests/comment_tests/tests/moderation_view_tests.py

    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  
    33from django.contrib.contenttypes.models import ContentType
    44from regressiontests.comment_tests.tests import CommentTestCase
    55from django.contrib.comments import signals
    6 
     6from django.contrib.comments.views.moderation import delete
     7import re
    78class FlagViewTests(CommentTestCase):
    89
    910    def testFlagGet(self):
    class DeleteViewTests(CommentTestCase):  
    9293        self.client.login(username="normaluser", password="normaluser")
    9394        response = self.client.post("/delete/%d/" % pk)
    9495        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)
    95101        c = Comment.objects.get(pk=pk)
    96102        self.failUnless(c.is_removed)
    97103        self.assertEqual(c.flags.filter(flag=CommentFlag.MODERATOR_DELETION, user__username="normaluser").count(), 1)
    class DeleteViewTests(CommentTestCase):  
    106112
    107113        # Post a comment and check the signals
    108114        self.testDeletePost()
    109         self.assertEqual(received_signals, [signals.comment_was_flagged])
     115        self.assertEqual(received_signals, [signals.comment_was_flagged,signals.comment_was_flagged])
    110116
    111117    def testDeletedView(self):
    112118        comments = self.createSomeComments()
    113119        pk = comments[0].pk       
    114120        response = self.client.get("/deleted/", data={"c":pk})
    115121        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       
    116132
    117133class ApproveViewTests(CommentTestCase):
    118134
  • tests/regressiontests/comment_tests/urls.py

    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',  
    55    url(r'^flag/(\d+)/$',    'custom_flag_comment'),
    66    url(r'^delete/(\d+)/$',  'custom_delete_comment'),
    77    url(r'^approve/(\d+)/$', 'custom_approve_comment'),
     8   
    89)
    9 
Back to Top