X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..0f63b71840c171609f7a267ca054a5d2a39a7f3f:/src/catalogue/signals.py diff --git a/src/catalogue/signals.py b/src/catalogue/signals.py index 660d26493..72f8a8910 100644 --- a/src/catalogue/signals.py +++ b/src/catalogue/signals.py @@ -1,12 +1,11 @@ -# -*- coding: utf-8 -*- # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # from django.conf import settings from django.core.cache import caches +from django.core.exceptions import ImproperlyConfigured from django.db.models.signals import post_save, post_delete from django.dispatch import receiver -from ssify import flush_ssi_includes from newtagging.models import tags_updated from picture.models import Picture, PictureArea from .models import BookMedia, Book, Collection, Fragment, Tag @@ -19,6 +18,7 @@ from .models import BookMedia, Book, Collection, Fragment, Tag @receiver([post_save, post_delete], sender=BookMedia) def bookmedia_save(sender, instance, **kwargs): + instance.book.set_audio_length() instance.book.save() @@ -30,17 +30,8 @@ def bookmedia_save(sender, instance, **kwargs): @receiver(post_save, sender=Collection) def collection_save(sender, instance, **kwargs): caches[settings.CACHE_MIDDLEWARE_ALIAS].clear() - flush_ssi_includes([ - '/katalog/%s.json' % lang - for lang in [lc for (lc, _ln) in settings.LANGUAGES]]) -@receiver(post_delete, sender=Collection) -def collection_delete(sender, instance, **kwargs): - flush_ssi_includes([ - '/katalog/%s.json' % lang - for lang in [lc for (lc, _ln) in settings.LANGUAGES]]) - #### # Book #### @@ -50,15 +41,17 @@ def collection_delete(sender, instance, **kwargs): def book_save(sender, instance, **kwargs): # Books come out anywhere. caches[settings.CACHE_MIDDLEWARE_ALIAS].clear() - instance.flush_includes() + # deleting selectively is too much work + try: + caches['template_fragments'].clear() + except ImproperlyConfigured: + pass + instance.clear_cache() @receiver(post_delete, sender=Book) def book_delete(sender, instance, **kwargs): caches[settings.CACHE_MIDDLEWARE_ALIAS].clear() - flush_ssi_includes([ - '/katalog/%s.json' % lang - for lang in [lc for (lc, _ln) in settings.LANGUAGES]]) if not settings.NO_SEARCH_INDEX: # remove the book from search index, when it is deleted. @@ -74,31 +67,24 @@ def book_delete(sender, instance, **kwargs): @receiver(Tag.after_change) -def tag_after_change(sender, instance, languages, **kwargs): +def tag_after_change(sender, instance, **kwargs): caches[settings.CACHE_MIDDLEWARE_ALIAS].clear() - flush_ssi_includes([ - '/katalog/%s.json' % lang - for lang in [lc for (lc, _ln) in settings.LANGUAGES]]) for model in Book, Picture: for model_instance in model.tagged.with_all([instance]).only('pk'): - model_instance.flush_includes() + model_instance.clear_cache() if instance.category == 'author': for model in Fragment, PictureArea: for model_instance in model.tagged.with_all([instance]).only('pk'): - model_instance.flush_includes() + model_instance.clear_cache() @receiver(tags_updated) def receive_tags_updated(sender, instance, affected_tags, **kwargs): - categories = set(tag.category for tag in affected_tags - if tag.category not in ('set', 'book')) + categories = set(tag.category for tag in affected_tags if tag.category not in ('set', 'book')) if not categories: return caches[settings.CACHE_MIDDLEWARE_ALIAS].clear() - instance.flush_includes() - flush_ssi_includes([ - '/katalog/%s.json' % lang - for lang in [lc for (lc, _ln) in settings.LANGUAGES]]) + instance.clear_cache()