diff --git a/boards/migrations/0025_auto_20150825_2049.py b/boards/migrations/0025_auto_20150825_2049.py --- a/boards/migrations/0025_auto_20150825_2049.py +++ b/boards/migrations/0025_auto_20150825_2049.py @@ -2,14 +2,21 @@ from __future__ import unicode_literals from django.db import migrations -from boards.models import Post class Migration(migrations.Migration): - def refuild_refmap(apps, schema_editor): + def rebuild_refmap(apps, schema_editor): + Post = apps.get_model('boards', 'Post') for post in Post.objects.all(): - post.build_refmap() + refposts = list() + for refpost in post.referenced_posts.all(): + result = '>>{}'.format(refpost.get_absolute_url(), + self.id) + if refpost.is_opening(): + result = '{}'.format(result) + refposts += result + post.refmap = ', '.join(refposts) post.save(update_fields=['refmap']) dependencies = [ @@ -17,5 +24,5 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RunPython(refuild_refmap), + migrations.RunPython(rebuild_refmap), ] diff --git a/boards/models/thread.py b/boards/models/thread.py --- a/boards/models/thread.py +++ b/boards/models/thread.py @@ -72,8 +72,9 @@ class ThreadManager(models.Manager): new_post_count=Count('multi_replies')) def get_new_post_count(self, datas): - return self.get_new_posts(datas).aggregate( - total_count=Count('multi_replies'))['total_count'] + new_posts = self.get_new_posts(datas) + return new_posts.aggregate(total_count=Count('multi_replies'))\ + ['total_count'] if new_posts else 0 def get_thread_max_posts(): @@ -224,7 +225,7 @@ class Thread(models.Model): def update_posts_time(self, exclude_posts=None): last_edit_time = self.last_edit_time - for post in self.post_set.all(): + for post in self.multi_replies.all(): if exclude_posts is None or post not in exclude_posts: # Manual update is required because uids are generated on save post.last_edit_time = last_edit_time