fix case rodering

This commit is contained in:
Ross
2023-07-31 12:02:23 +01:00
parent fdc0de29d3
commit b36fa370f1
2 changed files with 24 additions and 14 deletions
+17
View File
@@ -1,6 +1,7 @@
import json
import os
import pathlib
from typing import Tuple
from django.http import Http404, HttpRequest
from rad.settings import REMOTE_URL
@@ -521,6 +522,22 @@ class CaseCollection(ExamCollectionGenericBase):
return False
def get_case_by_index(self, case_index:int, case_count=False) -> Case | Tuple[Case, int]:
# Seems to be a bug when case_number is 0 or 1 the same (first) object gets returned
# forces a list fixes (but is likely inefficient)
cases = list(self.cases.all().order_by("casedetail__sort_order").prefetch_related())
try:
case = cases[case_index]
except IndexError: # Catch an invalid case_number
s = f"Invalid case number: {case_index}"
raise Http404(s)
if case_count:
return case, len(cases)
else:
return case
class CaseDetail(models.Model):
case = models.ForeignKey(Case, on_delete=models.CASCADE)