Mercurial > public > sg101
view gpp/downloads/signals.py @ 504:b5bd3509e6e6
Made some tweaks to the ajax login javascript.
Cleared the inputs on failure so someone won't repeatedly try a bad login.
Redirect on lockout so the page will refresh.
Set focus on the username box after failure for convenience.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 03 Dec 2011 16:25:15 +0000 |
parents | 3a4bbf9c2cce |
children |
line wrap: on
line source
"""Signals for the downloads application. We use signals to compute the denormalized category counts whenever a download is saved.""" from django.db.models.signals import post_save from django.db.models.signals import post_delete from downloads.models import Category, Download def on_download_save(sender, **kwargs): """This function updates the count field for all categories. It is called whenever a download is saved via a signal. """ if kwargs['created']: # we only have to update the parent category download = kwargs['instance'] cat = download.category cat.count = Download.public_objects.filter(category=cat).count() cat.save() else: # update all categories just to be safe (an existing download could # have been moved from one category to another cats = Category.objects.all() for cat in cats: cat.count = Download.public_objects.filter(category=cat).count() cat.save() def on_download_delete(sender, **kwargs): """This function updates the count field for the download's parent category. It is called when a download is deleted via a signal. """ # update the parent category download = kwargs['instance'] cat = download.category cat.count = Download.public_objects.filter(category=cat).count() cat.save() post_save.connect(on_download_save, sender=Download, dispatch_uid='downloads.signals') post_delete.connect(on_download_delete, sender=Download, dispatch_uid='downloads.signals')