diff --git a/apps/assets/api/node.py b/apps/assets/api/node.py index 829d4630a..51e830efc 100644 --- a/apps/assets/api/node.py +++ b/apps/assets/api/node.py @@ -122,6 +122,7 @@ class NodeChildrenAsTreeApi(generics.ListAPIView): nodes_invalid = Node.objects.exclude(key__startswith=self.node.key) queryset.extend(list(nodes_invalid)) queryset = [node.as_tree_node() for node in queryset] + queryset = sorted(queryset) return queryset def filter_assets(self, queryset): diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 6f0a4b452..1a5cdf9d5 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -44,7 +44,15 @@ class Node(OrgModelMixin): return True self_key = [int(k) for k in self.key.split(':')] other_key = [int(k) for k in other.key.split(':')] - return self_key.__lt__(other_key) + self_parent_key = self_key[:-1] + other_parent_key = other_key[:-1] + + if self_parent_key == other_parent_key: + return self.name > other.name + if self_key != other_key: + return self_key > other_key + else: + return self.name > other.name def __lt__(self, other): return not self.__gt__(other) @@ -305,5 +313,3 @@ class Node(OrgModelMixin): for i in range(count): node = random.choice(cls.objects.all()) node.create_child('Node {}'.format(i)) - -