__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" from django.db.models.signals import post_save, post_delete from django.dispatch import receiver from forums.models import Post @receiver(post_save, sender=Post) def post_save_update_cfs_in_post_hierarchy(sender, instance, created, **kwargs): """ When a Post is created, update all related Post (and Forum) calculated fields. """ if created: if instance.parent: instance.parent.update_cfs() @receiver(post_delete, sender=Post) def post_delete_update_cfs_in_post_hierarchy(sender, instance, **kwargs): """ When a Post is deleted, update all related Post (and Forum) calculated fields. """ if instance.parent: instance.parent.update_cfs() # to cover multi-instance Post deletion in admin, # which might temporarily break recursive climbing of the hierarchy: if instance.anchor: instance.anchor.update_cfs()