Skip to content
Snippets Groups Projects
Commit ff4a1647 authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'fix-children-ordering' into 'master'

Fix element children ordering

See merge request !634
parents 4657bea3 59ef1c26
No related branches found
No related tags found
1 merge request!634Fix element children ordering
......@@ -178,6 +178,9 @@ class ElementsListMixin(object):
return prefetch
def get_order_by(self):
return ('corpus', 'type__slug', 'name', 'id')
@property
def apply_distinct(self):
# Use queryset.distinct() whenever best_class is defined
......@@ -189,7 +192,7 @@ class ElementsListMixin(object):
.filter(**self.get_filters()) \
.exclude(**self.get_excludes()) \
.prefetch_related(*self.get_prefetch()) \
.order_by('corpus', 'type__slug', 'name', 'id')
.order_by(*self.get_order_by())
if self.apply_distinct:
queryset = queryset.distinct()
return queryset
......@@ -326,6 +329,9 @@ class ElementChildren(ElementsListMixin, ListAPIView):
return filters
def get_order_by(self):
return ('paths__ordering', )
def get_queryset(self):
return Element.objects.get_descending(self.kwargs['pk'])
......
......@@ -699,6 +699,28 @@ class TestElementsAPI(FixtureAPITestCase):
}
])
def test_element_children_ordering(self):
expected = [
'Surface F',
'Surface C',
'Surface D',
'Surface B',
'Surface A',
'Surface E',
]
for ordering, name in enumerate(expected):
Element.objects.get(type__slug='surface', name=name).paths.update(ordering=ordering)
response = self.client.get(
reverse('api:elements-children', kwargs={'pk': str(self.vol.id)})
+ '?recursive&hidden'
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(
[r['name'] for r in response.json()['results']],
expected,
)
def test_related_elements(self):
act = self.corpus.elements.get(name='Act 1')
response = self.client.get(reverse('api:related-elements', kwargs={'pk': str(act.id)}))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment