.
This commit is contained in:
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user