summaryrefslogtreecommitdiff
path: root/archaeological_finds/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-03-31 12:45:55 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2020-03-31 12:45:55 +0200
commitb3a7f49ee451e3e0ba944c3d1fa8d5510a382988 (patch)
tree1cda19212b69acffbd33767a00982b0de60c6e87 /archaeological_finds/views.py
parent087fa8b475cca05350d2a9f5d808c8b7e73e7513 (diff)
downloadIshtar-b3a7f49ee451e3e0ba944c3d1fa8d5510a382988.tar.bz2
Ishtar-b3a7f49ee451e3e0ba944c3d1fa8d5510a382988.zip
Find basket API: order by basket order (fix)
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r--archaeological_finds/views.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 5068d24ee..1fc2b3722 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -1139,9 +1139,13 @@ class PublicFindAPI(APIView):
except models.FindBasket.DoesNotExist:
return empty
q = models.FindBasket.items.through.objects.filter(
- findbasket_id=basket.id).order_by("id")
- return models.Find.objects.filter(
- id__in=[bi["find_id"] for bi in q.values("find_id")])
+ findbasket_id=basket.id).values("find_id").order_by("id")
+ id_list = [bi["find_id"] for bi in q]
+ clauses = ' '.join(['WHEN id=%s THEN %s' % (pk, i)
+ for i, pk in enumerate(id_list)])
+ ordering = 'CASE {} END'.format(clauses)
+ return models.Find.objects.filter(id__in=id_list).extra(
+ select={'ordering': ordering}, order_by=('ordering',))
def get(self, request, format=None):
serializer = PublicSerializer(self.get_queryset(), many=True)