X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/1a2ba641f553db5582303a52329c345d0d437f35..8132fc186eb0c5fd02c86828c3a4735754296d02:/apps/catalogue/models/listeners.py diff --git a/apps/catalogue/models/listeners.py b/apps/catalogue/models/listeners.py index 4e76b0d9..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, Image +from catalogue.models import (Book, Chunk, Image, BookPublishRecord, + ImagePublishRecord) from catalogue.signals import post_publish from dvcs.signals import post_publishable @@ -29,6 +30,9 @@ 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) @@ -39,14 +43,13 @@ models.signals.post_save.connect(user_changed, sender=User) def publish_listener(sender, *args, **kwargs): - sender.touch() - for c in sender: - c.touch() -post_publish.connect(publish_listener, sender=Book) - -def publish_listener(sender, *args, **kwargs): - sender.touch() -post_publish.connect(publish_listener, sender=Image) + 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):