annotate gpp/forums/signals.py @ 379:84bcaff13129

Added logic to the forums javascript that adds the proper CSS class (odd or even) to a new post.
author Brian Neal <bgneal@gmail.com>
date Wed, 09 Mar 2011 00:49:41 +0000
parents d1b11096595b
children e0523e17ea43
rev   line source
bgneal@75 1 """
bgneal@75 2 Signal handlers for the forums application.
bgneal@75 3 """
bgneal@75 4 from django.db.models.signals import post_save
bgneal@75 5 from django.db.models.signals import post_delete
bgneal@181 6
bgneal@348 7 from forums.models import Forum, Topic, Post
bgneal@232 8 from forums.views.subscriptions import notify_topic_subscribers
bgneal@75 9
bgneal@75 10
bgneal@75 11 def on_topic_save(sender, **kwargs):
bgneal@75 12 if kwargs['created']:
bgneal@75 13 topic = kwargs['instance']
bgneal@75 14 topic.forum.topic_count_update()
bgneal@75 15 topic.forum.save()
bgneal@75 16
bgneal@75 17
bgneal@75 18 def on_topic_delete(sender, **kwargs):
bgneal@75 19 topic = kwargs['instance']
bgneal@75 20 topic.forum.topic_count_update()
bgneal@75 21 topic.forum.save()
bgneal@75 22
bgneal@75 23
bgneal@75 24 def on_post_save(sender, **kwargs):
bgneal@75 25 if kwargs['created']:
bgneal@75 26 post = kwargs['instance']
bgneal@75 27
bgneal@75 28 # update the topic
bgneal@75 29 post.topic.post_count_update()
bgneal@75 30 post.topic.save()
bgneal@75 31
bgneal@75 32 # update the forum
bgneal@75 33 post.topic.forum.post_count_update()
bgneal@75 34 post.topic.forum.save()
bgneal@75 35
bgneal@181 36 # send out any email notifications
bgneal@181 37 notify_topic_subscribers(post)
bgneal@181 38
bgneal@75 39
bgneal@75 40 def on_post_delete(sender, **kwargs):
bgneal@75 41 post = kwargs['instance']
bgneal@75 42
bgneal@75 43 # update the topic
bgneal@348 44 try:
bgneal@348 45 post.topic.post_count_update()
bgneal@348 46 post.topic.save()
bgneal@348 47 except Topic.DoesNotExist:
bgneal@348 48 pass
bgneal@348 49 else:
bgneal@348 50 # update the forum
bgneal@348 51 try:
bgneal@348 52 post.topic.forum.post_count_update()
bgneal@348 53 post.topic.forum.save()
bgneal@348 54 except Forum.DoesNotExist:
bgneal@348 55 pass
bgneal@75 56
bgneal@75 57
bgneal@260 58 post_save.connect(on_topic_save, sender=Topic, dispatch_uid='forums.signals')
bgneal@260 59 post_delete.connect(on_topic_delete, sender=Topic, dispatch_uid='forums.signals')
bgneal@75 60
bgneal@260 61 post_save.connect(on_post_save, sender=Post, dispatch_uid='forums.signals')
bgneal@260 62 post_delete.connect(on_post_delete, sender=Post, dispatch_uid='forums.signals')