.
This commit is contained in:
@@ -14,6 +14,7 @@ from django.forms import inlineformset_factory
|
|||||||
from atlas.models import (
|
from atlas.models import (
|
||||||
Case,
|
Case,
|
||||||
CaseCollection,
|
CaseCollection,
|
||||||
|
CidReportAnswer,
|
||||||
Differential,
|
Differential,
|
||||||
Finding,
|
Finding,
|
||||||
Series,
|
Series,
|
||||||
@@ -396,3 +397,12 @@ SeriesImageFormSet = inlineformset_factory(
|
|||||||
extra=0,
|
extra=0,
|
||||||
max_num=2000,
|
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 dal import autocomplete
|
||||||
from django.shortcuts import render, get_object_or_404, redirect
|
from django.shortcuts import render, get_object_or_404, redirect
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
# from django.contrib.auth.models import User
|
# from django.contrib.auth.models import User
|
||||||
from django.contrib.auth.decorators import login_required, user_passes_test
|
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 Http404, JsonResponse
|
||||||
from django.http import HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseRedirect, HttpResponse
|
||||||
|
|
||||||
|
from generic.models import CidUser
|
||||||
|
|
||||||
from .forms import (
|
from .forms import (
|
||||||
CaseCollectionCaseFormSet,
|
CaseCollectionCaseFormSet,
|
||||||
CaseCollectionForm,
|
CaseCollectionForm,
|
||||||
CaseForm,
|
CaseForm,
|
||||||
|
CidReportAnswerForm,
|
||||||
ConditionForm,
|
ConditionForm,
|
||||||
FindingForm,
|
FindingForm,
|
||||||
SeriesForm,
|
SeriesForm,
|
||||||
@@ -42,6 +46,7 @@ from .forms import (
|
|||||||
from .models import (
|
from .models import (
|
||||||
Case,
|
Case,
|
||||||
CaseCollection,
|
CaseCollection,
|
||||||
|
CaseDetail,
|
||||||
Condition,
|
Condition,
|
||||||
PathologicalProcess,
|
PathologicalProcess,
|
||||||
Presentation,
|
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):
|
def collection_case_view(request, pk, case_number, take=False, cid=None, passcode=None):
|
||||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||||
|
|
||||||
|
form = None
|
||||||
|
|
||||||
if take:
|
if take:
|
||||||
|
if not collection.active:
|
||||||
|
raise Http404("Exam not found")
|
||||||
|
|
||||||
if not collection.check_cid_user(cid, passcode, request):
|
if not collection.check_cid_user(cid, passcode, request):
|
||||||
raise Http404("Error accessing exam")
|
raise Http404("Error accessing exam")
|
||||||
|
|
||||||
|
|
||||||
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
|
cases = collection.cases.all().order_by("casedetail__sort_order").prefetch_related()
|
||||||
case = cases[case_number]
|
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")
|
series_list = case.series.all().prefetch_related("images", "examination", "plane")
|
||||||
|
|
||||||
previous = case_number > 0
|
previous = case_number > 0
|
||||||
@@ -1084,6 +1129,7 @@ def collection_case_view(request, pk, case_number, take=False, cid=None, passcod
|
|||||||
request,
|
request,
|
||||||
"atlas/collection_case_view.html",
|
"atlas/collection_case_view.html",
|
||||||
{
|
{
|
||||||
|
"form": form,
|
||||||
"collection": collection,
|
"collection": collection,
|
||||||
"case": case,
|
"case": case,
|
||||||
"series_list": series_list,
|
"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.shortcuts import render, get_object_or_404, redirect
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
# from django.contrib.auth.models import User
|
# from django.contrib.auth.models import User
|
||||||
from django.contrib.auth.decorators import login_required, user_passes_test
|
from django.contrib.auth.decorators import login_required, user_passes_test
|
||||||
|
|||||||
Reference in New Issue
Block a user