Browse Source

#675: updated signals for readtracker

Rafał Pitoń 7 years ago
parent
commit
269efa9b12
1 changed files with 26 additions and 8 deletions
  1. 26 8
      misago/readtracker/signals.py

+ 26 - 8
misago/readtracker/signals.py

@@ -2,7 +2,7 @@ from django.dispatch import Signal, receiver
 
 from misago.categories import PRIVATE_THREADS_ROOT_NAME
 from misago.categories.signals import delete_category_content, move_category_content
-from misago.threads.signals import move_thread
+from misago.threads.signals import merge_thread, move_thread, move_post
 
 
 all_read = Signal()
@@ -13,19 +13,37 @@ thread_read = Signal(providing_args=["thread"])
 
 @receiver(delete_category_content)
 def delete_category_threads(sender, **kwargs):
-    sender.categoryread_set.all().delete()
-    sender.threadread_set.all().delete()
+    sender.postread_set.all().delete()
 
 
 @receiver(move_category_content)
-def delete_category_tracker(sender, **kwargs):
-    sender.categoryread_set.all().delete()
-    sender.threadread_set.all().delete()
+def move_category_tracker(sender, **kwargs):
+    sender.postread_set.update(category=kwargs['new_category'])
+
+
+@receiver(merge_thread)
+def merge_thread_tracker(sender, **kwargs):
+    other_thread = kwargs['other_thread']
+    other_thread.postread_set.update(
+        category=sender.category,
+        thread=sender,
+    )
 
 
 @receiver(move_thread)
-def delete_thread_tracker(sender, **kwargs):
-    sender.threadread_set.all().delete()
+def move_thread_tracker(sender, **kwargs):
+    sender.postread_set.update(
+        category=sender.category,
+        thread=sender,
+    )
+
+
+@receiver(move_post)
+def move_post_tracker(sender, **kwargs):
+    sender.postread_set.update(
+        category=sender.category,
+        thread=sender.thread,
+    )
 
 
 @receiver(thread_read)