annotate potd/signals.py @ 629:f4c043cf55ac

Wiki integration. Requests don't always have sessions. In particular this occurs when a request is made without a trailing slash. The Common middleware redirects when this happens, and the middleware process_request() processing stops before a session can get added. So just set an attribute on the request object for each operation. This seemed weird to me at first, but there are plenty of examples of this in the Django code base already.
author Brian Neal <bgneal@gmail.com>
date Tue, 13 Nov 2012 13:50:06 -0600
parents ee87ea74d46b
children
rev   line source
bgneal@532 1 """
bgneal@532 2 Signal handlers for the potd application.
bgneal@532 3
bgneal@532 4 """
bgneal@532 5 from django.db.models.signals import post_save, post_delete
bgneal@532 6
bgneal@532 7 from potd.models import Photo, Sequence
bgneal@532 8
bgneal@532 9
bgneal@532 10 def on_photo_save(sender, **kwargs):
bgneal@532 11 """
bgneal@532 12 This function is executed when a Photo is saved. It inserts the photo into
bgneal@532 13 the current sequence.
bgneal@532 14
bgneal@532 15 """
bgneal@532 16 photo = kwargs['instance']
bgneal@532 17 Sequence.objects.insert_photo(photo.pk)
bgneal@532 18
bgneal@532 19
bgneal@532 20 def on_photo_delete(sender, **kwargs):
bgneal@532 21 """
bgneal@532 22 This function is executed when a Photo is deleted. It removes the photo from
bgneal@532 23 the current sequence of photos.
bgneal@532 24
bgneal@532 25 """
bgneal@532 26 photo = kwargs['instance']
bgneal@532 27 Sequence.objects.remove_photo(photo.pk)
bgneal@532 28
bgneal@532 29
bgneal@532 30 post_save.connect(on_photo_save, sender=Photo, dispatch_uid='potd.signals')
bgneal@532 31 post_delete.connect(on_photo_delete, sender=Photo, dispatch_uid='potd.signals')