# HG changeset patch # User Brian Neal # Date 1324786532 0 # Node ID ff67946fd4b07d9eef8c7b56d81e1b42bd9708e9 # Parent 1f92a53db575336ad19bff6a61fa2fcbb67dd65f 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. diff -r 1f92a53db575 -r ff67946fd4b0 gpp/potd/__init__.py --- 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 diff -r 1f92a53db575 -r ff67946fd4b0 gpp/potd/models.py --- 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' - diff -r 1f92a53db575 -r ff67946fd4b0 gpp/potd/signals.py --- /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')