vmi-virtual-memorial/vmi-wd-backend / 1faf014

Browse files

update views to support toggle sort by class year/alphabetical on conflict page

Authored by espadonne
SHA
1faf014ad9e0293f3828ff262e07a0a8d70870fb
Parents
f34b2eb
Tree
ccd7afd

1 changed file

StatusFile+-
M memorial/views.py 15 3
memorial/views.pymodified
@@ -346,13 +346,25 @@ def memorial_index(request):
346346
     """Get all conflicts with their casualties for the memorial index"""
347347
     conflicts = Conflict.objects.all()
348348
     data = []
349
-    
349
+
350
+    # Get sort parameter from query params (default to alphabetical)
351
+    sort_by = request.query_params.get('sort', 'alphabetical')
352
+
350353
     for conflict in conflicts:
351
-        casualties = Person.objects.filter(conflict=conflict).order_by('last_name', 'first_name')
354
+        if sort_by == 'class_year':
355
+            # Sort by class year (nulls last), then by name
356
+            casualties = Person.objects.filter(conflict=conflict).extra(
357
+                select={'class_year_null': 'class_year IS NULL'},
358
+                order_by=['class_year_null', 'class_year', 'last_name', 'first_name']
359
+            )
360
+        else:
361
+            # Default to alphabetical sorting
362
+            casualties = Person.objects.filter(conflict=conflict).order_by('last_name', 'first_name')
363
+
352364
         conflict_data = ConflictSerializer(conflict).data
353365
         conflict_data['casualties'] = PersonDetailSerializer(casualties, many=True).data
354366
         data.append(conflict_data)
355
-    
367
+
356368
     return Response(data)
357369
 
358370