X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/ce8d791a5298e0cb2569034aec4c8b57afac97b2..8132fc186eb0c5fd02c86828c3a4735754296d02:/apps/catalogue/models/listeners.py diff --git a/apps/catalogue/models/listeners.py b/apps/catalogue/models/listeners.py index 7848974f..1cfac276 100755 --- a/apps/catalogue/models/listeners.py +++ b/apps/catalogue/models/listeners.py @@ -5,7 +5,8 @@ # from django.contrib.auth.models import User from django.db import models -from catalogue.models import Book, Chunk +from catalogue.models import (Book, Chunk, Image, BookPublishRecord, + ImagePublishRecord) from catalogue.signals import post_publish from dvcs.signals import post_publishable @@ -23,7 +24,15 @@ def chunk_changed(sender, instance, created, **kwargs): models.signals.post_save.connect(chunk_changed, sender=Chunk) +def image_changed(sender, instance, created, **kwargs): + instance.touch() +models.signals.post_save.connect(image_changed, sender=Image) + + def user_changed(sender, instance, *args, **kwargs): + if 'last_login' in (kwargs.get('update_fields') or {}): + # Quick hack - this change seems to result from logging user in so just ignore it. + return books = set() for c in instance.chunk_set.all(): books.add(c.book) @@ -34,15 +43,28 @@ models.signals.post_save.connect(user_changed, sender=User) def publish_listener(sender, *args, **kwargs): - sender.book.touch() - for c in sender.book: - c.touch() + if isinstance(sender, BookPublishRecord): + sender.book.touch() + for c in sender.book: + c.touch() + elif isinstance(sender, ImagePublishRecord): + sender.image.touch() post_publish.connect(publish_listener) +def chunk_publishable_listener(sender, *args, **kwargs): + sender.tree.touch() + if isinstance(sender.tree, Chunk): + sender.tree.book.touch() +post_publishable.connect(chunk_publishable_listener) + +def publishable_listener(sender, *args, **kwargs): + sender.tree.touch() +post_publishable.connect(publishable_listener, sender=Image) + + def listener_create(sender, instance, created, **kwargs): if created: instance.chunk_set.create(number=1, slug='1') models.signals.post_save.connect(listener_create, sender=Book) -