X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/4ac9918f152cc49badd4a359bfed41e723161cdf..8132fc186eb0c5fd02c86828c3a4735754296d02:/apps/catalogue/models/listeners.py diff --git a/apps/catalogue/models/listeners.py b/apps/catalogue/models/listeners.py index 532f1e79..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,16 +43,24 @@ 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() - sender.tree.book.touch() -post_publishable.connect(publishable_listener) +post_publishable.connect(publishable_listener, sender=Image) def listener_create(sender, instance, created, **kwargs):