Files
penracourses/rad/views.py
T
Ross ed230e4d89 .
2021-02-02 09:13:28 +00:00

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"})