Mercurial > public > sg101
changeset 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 | 1f92a53db575 |
children | 387d46abcb95 |
files | gpp/potd/__init__.py gpp/potd/models.py gpp/potd/signals.py |
diffstat | 3 files changed, 32 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/gpp/potd/__init__.py Fri Dec 23 23:11:45 2011 +0000 +++ b/gpp/potd/__init__.py Sun Dec 25 04:15:32 2011 +0000 @@ -0,0 +1,1 @@ +import signals
--- a/gpp/potd/models.py Fri Dec 23 23:11:45 2011 +0000 +++ b/gpp/potd/models.py Sun Dec 25 04:15:32 2011 +0000 @@ -50,11 +50,6 @@ self.generate_thumb() super(Photo, self).save(*args, **kwargs) - Sequence.objects.insert_photo(self.pk) - - def delete(self): - Sequence.objects.remove_photo(self.pk) - super(Photo, self).delete() def can_comment_on(self): return Current.objects.get_current_id() == self.id @@ -178,4 +173,3 @@ class Meta: verbose_name_plural = 'Sequence' -
--- /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')