fix collection ordering

This commit is contained in:
Ross
2024-02-27 08:41:15 +00:00
parent 9d0cf66441
commit 99eb6037d7
5 changed files with 107 additions and 10 deletions
+13 -2
View File
@@ -816,13 +816,17 @@ class CaseCollection(ExamOrCollectionGenericBase):
# return False
def get_cases(self):
"""Returns the cases in the collection in order of the CaseDetail sort_order"""
return self.cases.all().order_by("casedetail__sort_order")
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()
self.get_cases().prefetch_related()
)
try:
@@ -838,7 +842,7 @@ class CaseCollection(ExamOrCollectionGenericBase):
def get_case_take_url(self, case):
cases = list(
self.cases.all().order_by("casedetail__sort_order").prefetch_related()
self.get_cases().prefetch_related()
)
return reverse(
@@ -878,6 +882,13 @@ class CaseCollection(ExamOrCollectionGenericBase):
"studies": studies
}
def add_case(self, case):
"""Adds a case to the collection and makes sure order is maintained"""
# We might be better off adding via the case detail model direct
#CaseDetail.objects.create(case=case, collection=self)
self.cases.add(case)
self.order_cases()
def order_cases(self):
"""Modifies the casedetail sort_order to sequentially order the cases"""