From 1a4ef5caa06ddacc8d9370b5adcee248fd4f55f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Mon, 24 Jul 2023 11:57:18 +0200 Subject: [PATCH] sort space geometries in editor --- src/c3nav/editor/api.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/c3nav/editor/api.py b/src/c3nav/editor/api.py index 97288519..5dc506ea 100644 --- a/src/c3nav/editor/api.py +++ b/src/c3nav/editor/api.py @@ -67,6 +67,13 @@ class EditorViewSet(EditorViewSetMixin, ViewSet): lookup_field = 'path' lookup_value_regex = r'.+' + @staticmethod + def space_sorting_func(space): + groups = tuple(space.groups.all()) + if not groups: + return (0, 0, 0) + return (1, groups[0].category.priority, groups[0].hierarchy, groups[0].priority) + @staticmethod def _get_level_geometries(level): buildings = level.buildings.all() @@ -101,7 +108,7 @@ class EditorViewSet(EditorViewSetMixin, ViewSet): for door in level.doors.all(): results.append(door) - results.extend(spaces.values()) + results.extend(sorted(spaces.values(), key=EditorViewSet.space_sorting_func)) return results @staticmethod