# HG changeset patch
# User Brian Neal <bgneal@gmail.com>
# 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')