X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/82c3054bcdeb000aa9782da80d644070797b5cbe..ae60b2a3949e96357477cc04f90fd0873cee8a92:/apps/catalogue/signals.py?ds=inline diff --git a/apps/catalogue/signals.py b/apps/catalogue/signals.py deleted file mode 100644 index 660d26493..000000000 --- a/apps/catalogue/signals.py +++ /dev/null @@ -1,104 +0,0 @@ -# -*- 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.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 - - -#### -# BookMedia -#### - - -@receiver([post_save, post_delete], sender=BookMedia) -def bookmedia_save(sender, instance, **kwargs): - instance.book.save() - - -#### -# Collection -#### - - -@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 -#### - - -@receiver(post_save, sender=Book) -def book_save(sender, instance, **kwargs): - # Books come out anywhere. - caches[settings.CACHE_MIDDLEWARE_ALIAS].clear() - instance.flush_includes() - - -@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. - from search.index import Index - idx = Index() - idx.remove_book(instance) - idx.index_tags() - - -#### -# Tag -#### - - -@receiver(Tag.after_change) -def tag_after_change(sender, instance, languages, **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() - - if instance.category == 'author': - for model in Fragment, PictureArea: - for model_instance in model.tagged.with_all([instance]).only('pk'): - model_instance.flush_includes() - - -@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')) - 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]])