def delete_user_threads(sender, **kwargs): recount_categories = set() recount_threads = set() for thread in batch_delete(sender.thread_set.all(), 50): recount_categories.add(thread.category_id) with transaction.atomic(): thread.delete() for post in batch_delete(sender.post_set.all(), 50): recount_categories.add(post.category_id) recount_threads.add(post.thread_id) with transaction.atomic(): post.delete() if recount_threads: changed_threads_qs = Thread.objects.filter(id__in=recount_threads) for thread in batch_update(changed_threads_qs, 50): thread.synchronize() thread.save() if recount_categories: for category in Category.objects.filter(id__in=recount_categories): category.synchronize() category.save()
def delete_user_threads(sender, **kwargs): recount_forums = set() recount_threads = set() for thread in batch_delete(sender.thread_set.all(), 50): recount_forums.add(thread.forum_id) with transaction.atomic(): thread.delete() for post in batch_delete(sender.post_set.all(), 50): recount_forums.add(post.forum_id) recount_threads.add(post.thread_id) with transaction.atomic(): post.delete() if recount_threads: changed_threads_qs = Thread.objects.filter(id__in=recount_threads) for thread in batch_update(changed_threads_qs, 50): thread.synchronize() thread.save() if recount_forums: for forum in Forum.objects.filter(id__in=recount_forums): forum.synchronize() forum.save()