.
This commit is contained in:
+90
-1
@@ -1,4 +1,4 @@
|
||||
from django.shortcuts import render
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
|
||||
from django.contrib.auth.decorators import login_required, user_passes_test
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
@@ -39,3 +39,92 @@ def get_examination_id(request):
|
||||
return HttpResponse(json.dumps(data), content_type="application/json")
|
||||
return HttpResponse("/")
|
||||
|
||||
|
||||
class ExamViews:
|
||||
def __init__(self, exam, app, question_type):
|
||||
self.Exam = exam
|
||||
self.app_name = app
|
||||
self.question_type = question_type
|
||||
|
||||
def exam_toggle_results_published(self, request, pk):
|
||||
if request.is_ajax() and request.method == "POST":
|
||||
|
||||
exam = get_object_or_404(self.Exam, pk=pk)
|
||||
|
||||
exam.publish_results = (
|
||||
True if request.POST.get("publish_results") == "true" else False
|
||||
)
|
||||
exam.save()
|
||||
data = {"status": "success", "publish_results": exam.publish_results}
|
||||
return JsonResponse(data, status=200)
|
||||
else:
|
||||
data = {"status": "error"}
|
||||
return JsonResponse(data, status=400)
|
||||
|
||||
|
||||
def exam_toggle_active(self, request, pk):
|
||||
if request.is_ajax() and request.method == "POST":
|
||||
|
||||
exam = get_object_or_404(self.Exam, pk=pk)
|
||||
|
||||
exam.active = True if request.POST.get("active") == "true" else False
|
||||
exam.save()
|
||||
data = {"status": "success", "active": exam.active}
|
||||
return JsonResponse(data, status=200)
|
||||
else:
|
||||
data = {"status": "error"}
|
||||
return JsonResponse(data, status=400)
|
||||
|
||||
|
||||
def active_exams(self, request, json=True):
|
||||
exams = self.Exam.objects.all()
|
||||
|
||||
active_exams = {"exams": []}
|
||||
|
||||
for exam in exams:
|
||||
if exam.active:
|
||||
active_exams["exams"].append(
|
||||
{
|
||||
"name": exam.get_exam_name(),
|
||||
"url": request.build_absolute_uri(exam.get_json_url()),
|
||||
"type": self.question_type,
|
||||
}
|
||||
)
|
||||
|
||||
if json == False:
|
||||
return active_exams["exams"]
|
||||
|
||||
return JsonResponse(active_exams)
|
||||
|
||||
@login_required
|
||||
def exam_json_recreate(self, request, pk):
|
||||
exam = get_object_or_404(self.Exam, pk=pk)
|
||||
|
||||
exam.recreate_json = True
|
||||
exam.save()
|
||||
|
||||
return redirect("{}:exam_overview".format(self.app_name), pk=pk)
|
||||
|
||||
@login_required
|
||||
def exam_list(self, request):
|
||||
exams = self.Exam.objects.all()
|
||||
return render(request, "{}/exam_list.html".format(self.app_name), {"exams": exams})
|
||||
|
||||
|
||||
@login_required
|
||||
def exam_overview(self, request, pk):
|
||||
#print(Exam.objects.all())
|
||||
#exams = Exam.objects.all()
|
||||
#print("test", Exam.objects.all().get(id=pk))
|
||||
exam = get_object_or_404(self.Exam, pk=pk)
|
||||
|
||||
questions = exam.exam_questions.all()
|
||||
|
||||
question_number = len(questions)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"{}/exam_overview.html".format(self.app_name),
|
||||
{"exam": exam, "questions": questions, "question_number": question_number},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user