Mercurial > public > sg101
diff gpp/potd/signals.py @ 532:ff67946fd4b0
For #242, move the updating of the POTD sequence into a new signals module.
When photos are deleted from the admin changelist in bulk, the individual
delete() functions on the photo objects is not called. However, the post_delete
signal is called for each object.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sun, 25 Dec 2011 04:15:32 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gpp/potd/signals.py Sun Dec 25 04:15:32 2011 +0000 @@ -0,0 +1,31 @@ +""" +Signal handlers for the potd application. + +""" +from django.db.models.signals import post_save, post_delete + +from potd.models import Photo, Sequence + + +def on_photo_save(sender, **kwargs): + """ + This function is executed when a Photo is saved. It inserts the photo into + the current sequence. + + """ + photo = kwargs['instance'] + Sequence.objects.insert_photo(photo.pk) + + +def on_photo_delete(sender, **kwargs): + """ + This function is executed when a Photo is deleted. It removes the photo from + the current sequence of photos. + + """ + photo = kwargs['instance'] + Sequence.objects.remove_photo(photo.pk) + + +post_save.connect(on_photo_save, sender=Photo, dispatch_uid='potd.signals') +post_delete.connect(on_photo_delete, sender=Photo, dispatch_uid='potd.signals')