116 lines
3.4 KiB
Python
116 lines
3.4 KiB
Python
from django.shortcuts import render, get_object_or_404, redirect
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from django import forms
|
|
|
|
# from django.contrib.auth.models import User
|
|
from django.contrib.auth.decorators import login_required, user_passes_test
|
|
from django.contrib.auth.models import User
|
|
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
|
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
|
from django.views.generic import ListView
|
|
|
|
from django.db.models.functions import Lower
|
|
|
|
from django.core.cache import cache
|
|
|
|
from django.urls import reverse_lazy, reverse
|
|
|
|
from django.http import Http404, JsonResponse
|
|
|
|
from django.http import HttpResponseRedirect, HttpResponse
|
|
|
|
from physics.models import CidUserAnswer as PhysicsCidUserAnswer
|
|
from physics.models import Exam as PhysicsExam
|
|
|
|
from anatomy.models import CidUserAnswer as AnatomyCidUserAnswer
|
|
from anatomy.models import Exam as AnatomyExam
|
|
|
|
from rapids.models import CidUserAnswer as RapidsCidUserAnswer
|
|
from rapids.models import Exam as RapidsExam
|
|
|
|
from anatomy.views import active_exams as active_anatomy_exams, postExamAnswers as postAnatomyExamAnswers
|
|
from rapids.views import active_exams as active_rapid_exams, postExamAnswers as postRapidExamAnswers
|
|
|
|
|
|
|
|
@login_required
|
|
def profile(request):
|
|
user = request.user
|
|
return render(request, "profile.html", {"user": user})
|
|
|
|
|
|
def cid_selector(request):
|
|
return render(
|
|
request,
|
|
"cid_selector.html",
|
|
)
|
|
|
|
|
|
def cid_scores(request, pk):
|
|
#exam = get_object_or_404(Exam, pk=pk)
|
|
|
|
# TODO:Need some kind of test for cid
|
|
cid = pk
|
|
|
|
#questions = exam.exam_questions.all()
|
|
physics_answers = PhysicsCidUserAnswer.objects.filter(
|
|
cid=cid)
|
|
anatomy_answers = AnatomyCidUserAnswer.objects.filter(
|
|
cid=cid)
|
|
rapids_answers = RapidsCidUserAnswer.objects.filter(
|
|
cid=cid)
|
|
|
|
|
|
if not physics_answers and not anatomy_answers and not rapids_answers:
|
|
raise Http404("cid not found")
|
|
|
|
physics_exam_ids = physics_answers.values_list("exam").distinct()
|
|
physics_exams = PhysicsExam.objects.filter(id__in=physics_exam_ids)
|
|
|
|
anatomy_exam_ids = anatomy_answers.values_list("exam").distinct()
|
|
anatomy_exams = AnatomyExam.objects.filter(id__in=anatomy_exam_ids)
|
|
|
|
rapids_exam_ids = rapids_answers.values_list("exam").distinct()
|
|
rapids_exams = RapidsExam.objects.filter(id__in=rapids_exam_ids)
|
|
|
|
|
|
return render(
|
|
request,
|
|
"cid_scores.html",
|
|
{
|
|
"physics_exams": physics_exams,
|
|
"anatomy_exams": anatomy_exams,
|
|
"rapids_exams": rapids_exams,
|
|
"cid": cid,
|
|
},
|
|
)
|
|
|
|
def active_exams(request):
|
|
anatomy_exams = active_anatomy_exams(request, False)
|
|
rapid_exams = active_rapid_exams(request, False)
|
|
|
|
exams = []
|
|
exams.extend(anatomy_exams)
|
|
exams.extend(rapid_exams)
|
|
|
|
active_exams = {"exams": exams}
|
|
|
|
|
|
return JsonResponse(active_exams)
|
|
|
|
|
|
@csrf_exempt
|
|
def exam_submit(request):
|
|
if request.is_ajax and request.method == "POST":
|
|
exam_type, exam_id = request.POST.get("eid").split("/")
|
|
|
|
if exam_type == "anatomy":
|
|
return postAnatomyExamAnswers(request)
|
|
elif exam_type == "rapid":
|
|
return postRapidExamAnswers(request)
|
|
return JsonResponse({"success": False, "error": "Invalid exam type"})
|
|
|
|
# postExamAnswers
|
|
return JsonResponse({"success": False, "error": "Invalid data"}) |