Code

Ticket #8968: fix_8968_v2.patch

File fix_8968_v2.patch, 5.6 KB (added by kkubasik, 5 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