diff --git a/boards/models/thread.py b/boards/models/thread.py --- a/boards/models/thread.py +++ b/boards/models/thread.py @@ -282,6 +282,7 @@ class Thread(models.Model): def get_reply_tree(self): replies = self.get_replies().prefetch_related('refposts') tree = [] + parent_positions = {} for reply in replies: parents = reply.refposts.all() found_parent = False @@ -290,8 +291,11 @@ class Thread(models.Model): for depth, element in tree: index += 1 if element in parents: - tree.insert(index, (depth + 1, reply)) + offset_under_parent = parent_positions.get(element, 1) + tree.insert(index + offset_under_parent - 1, (depth + 1, reply)) + parent_positions[element] = offset_under_parent + 1 found_parent = True + if not found_parent: tree.append((0, reply))