Mercurial > public > sg101
changeset 920:5902dc5e58a3
Forums app refactor.
For Django 1.7.7 upgrade.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 07 Apr 2015 20:11:32 -0500 (2015-04-08) |
parents | 0b6bf9c5a982 |
children | 6d08b1476a52 |
files | forums/__init__.py forums/apps.py forums/receivers.py forums/signals.py |
diffstat | 4 files changed, 71 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/forums/__init__.py Mon Apr 06 20:33:10 2015 -0500 +++ b/forums/__init__.py Tue Apr 07 20:11:32 2015 -0500 @@ -1,2 +1,1 @@ -import signals -import latest +default_app_config = 'forums.apps.ForumsConfig'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forums/apps.py Tue Apr 07 20:11:32 2015 -0500 @@ -0,0 +1,9 @@ +from django.apps import AppConfig + + +class ForumsConfig(AppConfig): + name = 'forums' + + def ready(self): + import forums.receivers + import forums.latest
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forums/receivers.py Tue Apr 07 20:11:32 2015 -0500 @@ -0,0 +1,60 @@ +""" +Signal handlers for the forums application. + +""" +from django.db.models.signals import post_save +from django.db.models.signals import post_delete + +from forums.models import Forum, Topic, Post +import forums.latest + + +def on_topic_save(sender, **kwargs): + if kwargs['created']: + topic = kwargs['instance'] + topic.forum.topic_count_update() + topic.forum.save() + + +def on_topic_delete(sender, **kwargs): + topic = kwargs['instance'] + topic.forum.topic_count_update() + topic.forum.save() + forums.latest.notify_topic_delete(topic) + + +def on_post_save(sender, **kwargs): + if kwargs['created']: + post = kwargs['instance'] + + # update the topic + post.topic.post_count_update() + post.topic.save() + + # update the forum + post.topic.forum.post_count_update() + post.topic.forum.save() + + +def on_post_delete(sender, **kwargs): + post = kwargs['instance'] + + # update the topic + try: + post.topic.post_count_update() + post.topic.save() + except Topic.DoesNotExist: + pass + else: + # update the forum + try: + post.topic.forum.post_count_update() + post.topic.forum.save() + except Forum.DoesNotExist: + pass + + +post_save.connect(on_topic_save, sender=Topic, dispatch_uid='forums.receivers') +post_delete.connect(on_topic_delete, sender=Topic, dispatch_uid='forums.receivers') +post_save.connect(on_post_save, sender=Post, dispatch_uid='forums.receivers') +post_delete.connect(on_post_delete, sender=Post, dispatch_uid='forums.receivers')
--- a/forums/signals.py Mon Apr 06 20:33:10 2015 -0500 +++ b/forums/signals.py Tue Apr 07 20:11:32 2015 -0500 @@ -1,68 +1,10 @@ """ -Signal handlers & signals for the forums application. +Signals for the forums application. """ -from django.db.models.signals import post_save -from django.db.models.signals import post_delete import django.dispatch -from forums.models import Forum, Topic, Post - -def on_topic_save(sender, **kwargs): - if kwargs['created']: - topic = kwargs['instance'] - topic.forum.topic_count_update() - topic.forum.save() - - -def on_topic_delete(sender, **kwargs): - topic = kwargs['instance'] - topic.forum.topic_count_update() - topic.forum.save() - forums.latest.notify_topic_delete(topic) - - -def on_post_save(sender, **kwargs): - if kwargs['created']: - post = kwargs['instance'] - - # update the topic - post.topic.post_count_update() - post.topic.save() - - # update the forum - post.topic.forum.post_count_update() - post.topic.forum.save() - - -def on_post_delete(sender, **kwargs): - post = kwargs['instance'] - - # update the topic - try: - post.topic.post_count_update() - post.topic.save() - except Topic.DoesNotExist: - pass - else: - # update the forum - try: - post.topic.forum.post_count_update() - post.topic.forum.save() - except Forum.DoesNotExist: - pass - - -post_save.connect(on_topic_save, sender=Topic, dispatch_uid='forums.signals') -post_delete.connect(on_topic_delete, sender=Topic, dispatch_uid='forums.signals') - -post_save.connect(on_post_save, sender=Post, dispatch_uid='forums.signals') -post_delete.connect(on_post_delete, sender=Post, dispatch_uid='forums.signals') - - -# Signals for the forums application. -# # This signal is sent when a topic has had its textual content (title) changed. # The provided arguments are: # sender - the topic model instance @@ -108,7 +50,3 @@ """ post_content_update.send_robust(post, created=False) - - -# Avoid circular imports -import forums.latest