X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..d5e836566b0bbff5242de33acc264ca94ad11f49:/src/catalogue/signals.py?ds=sidebyside

diff --git a/src/catalogue/signals.py b/src/catalogue/signals.py
index 660d26493..28d84bece 100644
--- a/src/catalogue/signals.py
+++ b/src/catalogue/signals.py
@@ -4,6 +4,7 @@
 #
 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
@@ -19,6 +20,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()
 
 
@@ -50,6 +52,11 @@ def collection_delete(sender, instance, **kwargs):
 def book_save(sender, instance, **kwargs):
     # Books come out anywhere.
     caches[settings.CACHE_MIDDLEWARE_ALIAS].clear()
+    # deleting selectively is too much work
+    try:
+        caches['template_fragments'].clear()
+    except ImproperlyConfigured:
+        pass
     instance.flush_includes()
 
 
@@ -92,8 +99,7 @@ def tag_after_change(sender, instance, languages, **kwargs):
 
 @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