fnp
/
redakcja.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update librarian
[redakcja.git]
/
apps
/
catalogue
/
models
/
listeners.py
diff --git
a/apps/catalogue/models/listeners.py
b/apps/catalogue/models/listeners.py
index
532f1e7
..
1cfac27
100755
(executable)
--- 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 django.contrib.auth.models import User
from django.db import models
-from catalogue.models import Book, Chunk
+from catalogue.models import (Book, Chunk, Image, BookPublishRecord,
+ ImagePublishRecord)
from catalogue.signals import post_publish
from dvcs.signals import post_publishable
from catalogue.signals import post_publish
from dvcs.signals import post_publishable
@@
-23,7
+24,15
@@
def chunk_changed(sender, instance, created, **kwargs):
models.signals.post_save.connect(chunk_changed, sender=Chunk)
models.signals.post_save.connect(chunk_changed, sender=Chunk)
+def image_changed(sender, instance, created, **kwargs):
+ instance.touch()
+models.signals.post_save.connect(image_changed, sender=Image)
+
+
def user_changed(sender, instance, *args, **kwargs):
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)
books = set()
for c in instance.chunk_set.all():
books.add(c.book)
@@
-34,16
+43,24
@@
models.signals.post_save.connect(user_changed, sender=User)
def publish_listener(sender, *args, **kwargs):
def publish_listener(sender, *args, **kwargs):
- sender.book.touch()
- for c in sender.book:
- c.touch()
+ 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)
post_publish.connect(publish_listener)
+def chunk_publishable_listener(sender, *args, **kwargs):
+ sender.tree.touch()
+ if isinstance(sender.tree, Chunk):
+ sender.tree.book.touch()
+post_publishable.connect(chunk_publishable_listener)
+
def publishable_listener(sender, *args, **kwargs):
sender.tree.touch()
def publishable_listener(sender, *args, **kwargs):
sender.tree.touch()
- sender.tree.book.touch()
-post_publishable.connect(publishable_listener)
+post_publishable.connect(publishable_listener, sender=Image)
def listener_create(sender, instance, created, **kwargs):
def listener_create(sender, instance, created, **kwargs):