1 # -*- coding: utf-8 -*-
3 # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
6 from django.contrib.auth.models import User
7 from django.db import models
8 from catalogue.models import (Book, Chunk, Image, BookPublishRecord,
10 from catalogue.signals import post_publish
11 from dvcs.signals import post_publishable
14 def book_changed(sender, instance, created, **kwargs):
18 models.signals.post_save.connect(book_changed, sender=Book)
21 def chunk_changed(sender, instance, created, **kwargs):
24 models.signals.post_save.connect(chunk_changed, sender=Chunk)
27 def image_changed(sender, instance, created, **kwargs):
29 models.signals.post_save.connect(image_changed, sender=Image)
32 def user_changed(sender, instance, *args, **kwargs):
33 if 'last_login' in (kwargs.get('update_fields') or {}):
34 # Quick hack - this change seems to result from logging user in so just ignore it.
37 for c in instance.chunk_set.all():
42 models.signals.post_save.connect(user_changed, sender=User)
45 def publish_listener(sender, *args, **kwargs):
46 if isinstance(sender, BookPublishRecord):
50 elif isinstance(sender, ImagePublishRecord):
52 post_publish.connect(publish_listener)
55 def chunk_publishable_listener(sender, *args, **kwargs):
57 if isinstance(sender.tree, Chunk):
58 sender.tree.book.touch()
59 post_publishable.connect(chunk_publishable_listener)
61 def publishable_listener(sender, *args, **kwargs):
63 post_publishable.connect(publishable_listener, sender=Image)
66 def listener_create(sender, instance, created, **kwargs):
68 instance.chunk_set.create(number=1, slug='1')
69 models.signals.post_save.connect(listener_create, sender=Book)