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
This commit is contained in:
parent
c6a2bd9b96
commit
378f5ddb5a
|
@ -9,13 +9,13 @@ from django.dispatch import Signal
|
||||||
# discarded and a 403 (not allowed) response. This signal is sent at more or less
|
# 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,
|
# 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.
|
# 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
|
# Sent just after a comment was posted. See above for how this differs
|
||||||
# from the Comment object's post-save signal.
|
# 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
|
# 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
|
# was a user requesting removal of a comment, a moderator approving/removing a
|
||||||
# comment, or some other custom user flag.
|
# comment, or some other custom user flag.
|
||||||
comment_was_flagged = Signal()
|
comment_was_flagged = Signal(providing_args=["comment", "flag", "created", "request"])
|
||||||
|
|
|
@ -96,7 +96,11 @@ def post_comment(request, next=None):
|
||||||
comment.user = request.user
|
comment.user = request.user
|
||||||
|
|
||||||
# Signal that the comment is about to be saved
|
# 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:
|
for (receiver, response) in responses:
|
||||||
if response == False:
|
if response == False:
|
||||||
|
@ -105,7 +109,11 @@ def post_comment(request, next=None):
|
||||||
|
|
||||||
# Save the comment and signal that it was saved
|
# Save the comment and signal that it was saved
|
||||||
comment.save()
|
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())
|
return next_redirect(data, next, comment_done, c=comment._get_pk_val())
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,13 @@ def flag(request, comment_id, next=None):
|
||||||
user = request.user,
|
user = request.user,
|
||||||
flag = comments.models.CommentFlag.SUGGEST_REMOVAL
|
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)
|
return next_redirect(request.POST.copy(), next, flag_done, c=comment.pk)
|
||||||
|
|
||||||
# Render a form on GET
|
# Render a form on GET
|
||||||
|
@ -61,7 +67,13 @@ def delete(request, comment_id, next=None):
|
||||||
)
|
)
|
||||||
comment.is_removed = True
|
comment.is_removed = True
|
||||||
comment.save()
|
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)
|
return next_redirect(request.POST.copy(), next, delete_done, c=comment.pk)
|
||||||
|
|
||||||
# Render a form on GET
|
# Render a form on GET
|
||||||
|
@ -98,7 +110,13 @@ def approve(request, comment_id, next=None):
|
||||||
comment.is_public = True
|
comment.is_public = True
|
||||||
comment.save()
|
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)
|
return next_redirect(request.POST.copy(), next, approve_done, c=comment.pk)
|
||||||
|
|
||||||
# Render a form on GET
|
# Render a form on GET
|
||||||
|
|
|
@ -102,10 +102,8 @@ class CommentViewTests(CommentTestCase):
|
||||||
|
|
||||||
# callback
|
# callback
|
||||||
def receive(sender, **kwargs):
|
def receive(sender, **kwargs):
|
||||||
self.assertEqual(sender.comment, "This is my comment")
|
self.assertEqual(kwargs['comment'].comment, "This is my comment")
|
||||||
# TODO: Get the two commented tests below to work.
|
self.assert_('request' in kwargs)
|
||||||
# self.assertEqual(form_data["comment"], "This is my comment")
|
|
||||||
# self.assertEqual(request.method, "POST")
|
|
||||||
received_signals.append(kwargs.get('signal'))
|
received_signals.append(kwargs.get('signal'))
|
||||||
|
|
||||||
# Connect signals and keep track of handled ones
|
# Connect signals and keep track of handled ones
|
||||||
|
@ -117,7 +115,7 @@ class CommentViewTests(CommentTestCase):
|
||||||
# Post a comment and check the signals
|
# Post a comment and check the signals
|
||||||
self.testCreateValidComment()
|
self.testCreateValidComment()
|
||||||
self.assertEqual(received_signals, excepted_signals)
|
self.assertEqual(received_signals, excepted_signals)
|
||||||
|
|
||||||
def testWillBePostedSignal(self):
|
def testWillBePostedSignal(self):
|
||||||
"""
|
"""
|
||||||
Test that the comment_will_be_posted signal can prevent the comment from
|
Test that the comment_will_be_posted signal can prevent the comment from
|
||||||
|
@ -137,7 +135,8 @@ class CommentViewTests(CommentTestCase):
|
||||||
it gets posted
|
it gets posted
|
||||||
"""
|
"""
|
||||||
def receive(sender, **kwargs):
|
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)
|
signals.comment_will_be_posted.connect(receive)
|
||||||
self.testCreateValidComment()
|
self.testCreateValidComment()
|
||||||
|
|
|
@ -48,9 +48,8 @@ class FlagViewTests(CommentTestCase):
|
||||||
|
|
||||||
# callback
|
# callback
|
||||||
def receive(sender, **kwargs):
|
def receive(sender, **kwargs):
|
||||||
flag = sender.flags.get(id=1)
|
self.assertEqual(kwargs['flag'].flag, CommentFlag.SUGGEST_REMOVAL)
|
||||||
self.assertEqual(flag.flag, CommentFlag.SUGGEST_REMOVAL)
|
self.assertEqual(kwargs['request'].user.username, "normaluser")
|
||||||
self.assertEqual(flag.user.username, "normaluser")
|
|
||||||
received_signals.append(kwargs.get('signal'))
|
received_signals.append(kwargs.get('signal'))
|
||||||
|
|
||||||
# Connect signals and keep track of handled ones
|
# Connect signals and keep track of handled ones
|
||||||
|
|
Loading…
Reference in New Issue