Commit 378f5ddb authored by Jacob Kaplan-Moss's avatar Jacob Kaplan-Moss
Browse files

Updated comment signals to provide enough information to actually act on. This...

Updated comment signals to provide enough information to actually act on. This was uncovered when working on the documentation, which'll be committed shortly.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8589 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent c6a2bd9b
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -9,13 +9,13 @@ from django.dispatch import Signal
# discarded and a 403 (not allowed) response. This signal is sent at more or less
# the same time (just before, actually) as the Comment object's pre-save signal,
# except that the HTTP request is sent along with this signal.
comment_will_be_posted = Signal()
comment_will_be_posted = Signal(providing_args=["comment", "request"])

# Sent just after a comment was posted. See above for how this differs
# from the Comment object's post-save signal.
comment_was_posted = Signal()
comment_was_posted = Signal(providing_args=["comment", "request"])

# Sent after a comment was "flagged" in some way. Check the flag to see if this
# was a user requesting removal of a comment, a moderator approving/removing a
# comment, or some other custom user flag.
comment_was_flagged = Signal()
comment_was_flagged = Signal(providing_args=["comment", "flag", "created", "request"])
+10 −2
Original line number Diff line number Diff line
@@ -96,7 +96,11 @@ def post_comment(request, next=None):
        comment.user = request.user

    # Signal that the comment is about to be saved
    responses = signals.comment_will_be_posted.send(comment)
    responses = signals.comment_will_be_posted.send(
        sender  = comment.__class__,
        comment = comment,
        request = request
    )

    for (receiver, response) in responses:
        if response == False:
@@ -105,7 +109,11 @@ def post_comment(request, next=None):

    # Save the comment and signal that it was saved
    comment.save()
    signals.comment_was_posted.send(comment)
    signals.comment_was_posted.send(
        sender  = comment.__class__,
        comment = comment,
        request = request
    )

    return next_redirect(data, next, comment_done, c=comment._get_pk_val())

+21 −3
Original line number Diff line number Diff line
@@ -27,7 +27,13 @@ def flag(request, comment_id, next=None):
            user    = request.user,
            flag    = comments.models.CommentFlag.SUGGEST_REMOVAL
        )
        signals.comment_was_flagged.send(comment)
        signals.comment_was_flagged.send(
            sender  = comment.__class__,
            comment = comment,
            flag    = flag,
            created = created,
            request = request,
        )
        return next_redirect(request.POST.copy(), next, flag_done, c=comment.pk)

    # Render a form on GET
@@ -61,7 +67,13 @@ def delete(request, comment_id, next=None):
        )
        comment.is_removed = True
        comment.save()
        signals.comment_was_flagged.send(comment)
        signals.comment_was_flagged.send(
            sender  = comment.__class__,
            comment = comment,
            flag    = flag,
            created = created,
            request = request,
        )
        return next_redirect(request.POST.copy(), next, delete_done, c=comment.pk)

    # Render a form on GET
@@ -98,7 +110,13 @@ def approve(request, comment_id, next=None):
        comment.is_public = True
        comment.save()

        signals.comment_was_flagged.send(comment)
        signals.comment_was_flagged.send(
            sender  = comment.__class__,
            comment = comment,
            flag    = flag,
            created = created,
            request = request,
        )
        return next_redirect(request.POST.copy(), next, approve_done, c=comment.pk)

    # Render a form on GET
+5 −6
Original line number Diff line number Diff line
@@ -102,10 +102,8 @@ class CommentViewTests(CommentTestCase):

        # callback
        def receive(sender, **kwargs):
            self.assertEqual(sender.comment, "This is my comment")
            # TODO: Get the two commented tests below to work.
#            self.assertEqual(form_data["comment"], "This is my comment")
#            self.assertEqual(request.method, "POST")
            self.assertEqual(kwargs['comment'].comment, "This is my comment")
            self.assert_('request' in kwargs)
            received_signals.append(kwargs.get('signal'))

        # Connect signals and keep track of handled ones
@@ -137,7 +135,8 @@ class CommentViewTests(CommentTestCase):
        it gets posted
        """
        def receive(sender, **kwargs):
            sender.is_public = False # a bad but effective spam filter :)...
             # a bad but effective spam filter :)...
            kwargs['comment'].is_public = False

        signals.comment_will_be_posted.connect(receive)
        self.testCreateValidComment()
+2 −3
Original line number Diff line number Diff line
@@ -48,9 +48,8 @@ class FlagViewTests(CommentTestCase):

        # callback
        def receive(sender, **kwargs):
            flag = sender.flags.get(id=1)
            self.assertEqual(flag.flag, CommentFlag.SUGGEST_REMOVAL)
            self.assertEqual(flag.user.username, "normaluser")
            self.assertEqual(kwargs['flag'].flag, CommentFlag.SUGGEST_REMOVAL)
            self.assertEqual(kwargs['request'].user.username, "normaluser")
            received_signals.append(kwargs.get('signal'))

        # Connect signals and keep track of handled ones