Mercurial > public > sg101
view gpp/weblinks/signals.py @ 286:72fd300685d5
For #95. You can now make posts with no text in the body if you have attachments. And now if you create a new topic with an attachment, and the POST fails (say you forgot the topic title), we will now re-attach attachments. Also fixed a bug in the smiley code that would arise if it was asked to markup an empty string.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 23 Oct 2010 20:19:46 +0000 |
parents | 3a4bbf9c2cce |
children |
line wrap: on
line source
"""Signals for the weblinks application. We use signals to compute the denormalized category counts whenever a weblink is saved.""" from django.db.models.signals import post_save from django.db.models.signals import post_delete from weblinks.models import Category, Link def on_link_save(sender, **kwargs): """This function updates the count field for all categories. It is called whenever a link is saved via a signal. """ if kwargs['created']: # we only have to update the parent category link = kwargs['instance'] cat = link.category cat.count = Link.public_objects.filter(category=cat).count() cat.save() else: # update all categories just to be safe (an existing link could # have been moved from one category to another cats = Category.objects.all() for cat in cats: cat.count = Link.public_objects.filter(category=cat).count() cat.save() def on_link_delete(sender, **kwargs): """This function updates the count field for the link's parent category. It is called when a link is deleted via a signal. """ # update the parent category link = kwargs['instance'] cat = link.category cat.count = Link.public_objects.filter(category=cat).count() cat.save() post_save.connect(on_link_save, sender=Link, dispatch_uid='weblinks.signals') post_delete.connect(on_link_delete, sender=Link, dispatch_uid='weblinks.signals')