Refactor case detail retrieval into a separate function for improved readability and error handling

This commit is contained in:
Ross
2025-10-06 11:32:44 +01:00
parent bdfa16bbb4
commit 569ef760fa
+13 -4
View File
@@ -303,10 +303,9 @@ def case_displaysets_delete(request, pk):
displayset.delete() displayset.delete()
return HttpResponse("<li class='list-group-item' >Display set deleted successfully.") return HttpResponse("<li class='list-group-item' >Display set deleted successfully.")
@login_required
@user_has_case_view_access def get_case_for_case_detail(pk: int) -> Case:
def case_detail(request, pk): try:
# Prefetch all related objects needed for the template
case = ( case = (
Case.objects Case.objects
.select_related() # Add any FK fields if needed .select_related() # Add any FK fields if needed
@@ -344,6 +343,14 @@ def case_detail(request, pk):
.get(pk=pk) .get(pk=pk)
) )
case.ordered_series = [sd.series for sd in case.seriesdetail_set.all()] case.ordered_series = [sd.series for sd in case.seriesdetail_set.all()]
return case
except Case.DoesNotExist:
raise Http404("Case not found.")
@login_required
@user_has_case_view_access
def case_detail(request, pk):
case = get_case_for_case_detail(pk)
can_edit = case.check_user_can_edit(request.user) can_edit = case.check_user_can_edit(request.user)
return render( return render(
@@ -2853,6 +2860,8 @@ def collection_case_view(request, pk, case_number):
case, case_count = collection.get_case_by_index(case_number, case_count=True) case, case_count = collection.get_case_by_index(case_number, case_count=True)
case = get_case_for_case_detail(case.pk)
casedetail = CaseDetail.objects.get(case=case, collection=collection) casedetail = CaseDetail.objects.get(case=case, collection=collection)
series_list = case.series.all().prefetch_related("images", "examination", "plane") series_list = case.series.all().prefetch_related("images", "examination", "plane")