This commit is contained in:
Ross
2022-04-01 22:27:30 +01:00
parent c0092bf68d
commit d8b5f36686
3 changed files with 58 additions and 1 deletions
+10
View File
@@ -14,6 +14,7 @@ from django.forms import inlineformset_factory
from atlas.models import (
Case,
CaseCollection,
CidReportAnswer,
Differential,
Finding,
Series,
@@ -396,3 +397,12 @@ SeriesImageFormSet = inlineformset_factory(
extra=0,
max_num=2000,
)
class CidReportAnswerForm(ModelForm):
class Meta:
model = CidReportAnswer
fields = ["answer"]
def __init__(self, *args, **kwargs):
super(CidReportAnswerForm, self).__init__(*args, **kwargs)
self.fields['answer'].required = False
+47 -1
View File
@@ -2,6 +2,7 @@ import json
from dal import autocomplete
from django.shortcuts import render, get_object_or_404, redirect
from django import forms
from django.utils import timezone
# from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required, user_passes_test
@@ -26,10 +27,13 @@ from django.urls import reverse_lazy, reverse
from django.http import Http404, JsonResponse
from django.http import HttpResponseRedirect, HttpResponse
from generic.models import CidUser
from .forms import (
CaseCollectionCaseFormSet,
CaseCollectionForm,
CaseForm,
CidReportAnswerForm,
ConditionForm,
FindingForm,
SeriesForm,
@@ -42,6 +46,7 @@ from .forms import (
from .models import (
Case,
CaseCollection,
CaseDetail,
Condition,
PathologicalProcess,
Presentation,
@@ -1066,15 +1071,55 @@ def collection_case_view_take(request, pk, case_number, cid, passcode):
def collection_case_view(request, pk, case_number, take=False, cid=None, passcode=None):
collection = get_object_or_404(CaseCollection, pk=pk)
form = None
if take:
if not collection.active:
raise Http404("Exam not found")
if not collection.check_cid_user(cid, passcode, request):
raise Http404("Error accessing exam")
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
case = cases[case_number]
if take:
c = CidUser.objects.filter(cid=cid).first()
cid_user_exam = collection.get_or_create_cid_user_exam(cid_user=c)
case_detail = CaseDetail.objects.get(case=case, collection=collection)
answer = case_detail.get(cid=cid)
if request.method == "POST":
if answer:
form = CidReportAnswerForm(request.POST, instance=answer)
else:
form = CidReportAnswerForm(request.POST)
if form.is_valid():
answer = form.save(commit=False)
answer.cid = cid
answer.question = case_detail
# answer.published_date = timezone.now()
answer.save()
cid_user_exam.end_time = timezone.now()
cid_user_exam.save()
kwargs = {"pk": pk, "cid": cid, "passcode": passcode}
if "next" in request.POST:
return redirect("atlas:collection_case_view_take", case_number=case_number + 1, **kwargs)
elif "previous" in request.POST:
return redirect("atlas:collection_case_view_take", case_number=case_number - 1, **kwargs)
#elif "finish" in request.POST:
# return redirect("atlas:collection_overview_take", **kwargs)
elif "goto" in request.POST:
return redirect(
"atlas:collection_case_view_take", case_number=int(request.POST.get("goto")), **kwargs
)
else:
form = CidReportAnswerForm(instance=answer)
series_list = case.series.all().prefetch_related("images", "examination", "plane")
previous = case_number > 0
@@ -1084,6 +1129,7 @@ def collection_case_view(request, pk, case_number, take=False, cid=None, passcod
request,
"atlas/collection_case_view.html",
{
"form": form,
"collection": collection,
"case": case,
"series_list": series_list,
+1
View File
@@ -6,6 +6,7 @@ from sbas.forms import CidUserAnswerForm, ExamForm
from django.shortcuts import render, get_object_or_404, redirect
from django.views.decorators.csrf import csrf_exempt
from django import forms
from django.utils import timezone
# from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required, user_passes_test