continue unifying views
This commit is contained in:
@@ -110,7 +110,12 @@
|
||||
ans: answers
|
||||
}
|
||||
|
||||
postAnswers(ans);
|
||||
let json = {
|
||||
eid: {{exam.pk}},
|
||||
answers: JSON.stringify([ans]),
|
||||
};
|
||||
|
||||
postAnswers(json);
|
||||
|
||||
})
|
||||
});
|
||||
@@ -125,7 +130,7 @@
|
||||
|
||||
function postAnswers(ans) {
|
||||
console.log(ans);
|
||||
$.post("{% url 'physics:exam_answers_submit' %}", JSON.stringify(ans)).done((data) => {
|
||||
$.post("{% url 'physics:exam_answers_submit' %}", ans, null, "json").done((data) => {
|
||||
console.log(data);
|
||||
if (data.success) {
|
||||
let ret = confirm(
|
||||
|
||||
+6
-6
@@ -5,7 +5,7 @@ app_name = "physics"
|
||||
|
||||
urlpatterns = [
|
||||
# path('', views.question_list, name='question_list'),
|
||||
path("", views.index, name="index"),
|
||||
path("", views.PhysicsExamViews.index, name="index"),
|
||||
#path("question/", views.QuestionView.as_view(), name="question_view"),
|
||||
path("question/<int:pk>/", views.question_detail, name="question_detail"),
|
||||
#path("question/create/", views.QuestionCreate.as_view(), name="anatomy_question_create"),
|
||||
@@ -13,15 +13,15 @@ urlpatterns = [
|
||||
#path("exam/<int:pk>/<int:sk>/mark", views.mark, name="mark"),
|
||||
#path("exam/<int:pk>/mark", views.mark_overview, name="mark_overview"),
|
||||
path("exam/<int:pk>/take", views.exam_take, name="exam_take"),
|
||||
path("exam/<int:pk>/", views.exam_overview, name="exam_overview"),
|
||||
path("exam/<int:pk>/", views.PhysicsExamViews.exam_overview, name="exam_overview"),
|
||||
path("exam/<int:pk>/scores", views.exam_scores_cid,
|
||||
name="exam_scores_cid"),
|
||||
path("exam/<int:pk>/scores/<int:sk>/", views.exam_scores_cid_user,
|
||||
name="exam_scores_cid_user"),
|
||||
path("exam/<int:pk>/toggle_active", views.exam_toggle_active, name="exam_toggle_active"),
|
||||
path("exam/<int:pk>/toggle_results_published", views.exam_toggle_results_published, name="exam_toggle_results_published"),
|
||||
path("exam/submit", views.postExamAnswers, name="exam_answers_submit"),
|
||||
path("exam/", views.exam_list, name="exam_list"),
|
||||
path("exam/<int:pk>/toggle_active", views.PhysicsExamViews.exam_toggle_active, name="exam_toggle_active"),
|
||||
path("exam/<int:pk>/toggle_results_published", views.PhysicsExamViews.exam_toggle_results_published, name="exam_toggle_results_published"),
|
||||
path("exam/submit", views.PhysicsExamViews.postExamAnswers, name="exam_answers_submit"),
|
||||
path("exam/", views.PhysicsExamViews.exam_list, name="exam_list"),
|
||||
path("exam/available", views.active_exams, name="active_exams"),
|
||||
#path("exam/json/<int:pk>", views.exam_json, name="exam_json"),
|
||||
#path("exam/json/<int:pk>/recreate", views.exam_json_recreate, name="exam_json_recreate"),
|
||||
|
||||
+4
-82
@@ -31,80 +31,20 @@ import json
|
||||
import statistics
|
||||
import plotly.express as px
|
||||
|
||||
from generic.views import ExamViews
|
||||
|
||||
|
||||
def question_list(request):
|
||||
questions = Question.objects.all()
|
||||
return render(request, "physics/question_list.html", {"questions": questions})
|
||||
|
||||
|
||||
@login_required
|
||||
def index(request):
|
||||
exams = Exam.objects.all()
|
||||
return render(request, "physics/index.html", {"exams": exams})
|
||||
|
||||
|
||||
@login_required
|
||||
def question_detail(request, pk):
|
||||
question = get_object_or_404(Question, pk=pk)
|
||||
return render(request, "physics/question_detail.html", {"question": question})
|
||||
|
||||
|
||||
@login_required
|
||||
def exam_list(request):
|
||||
exams = Exam.objects.all()
|
||||
return render(request, "physics/exam_list.html", {"exams": exams})
|
||||
|
||||
|
||||
@login_required
|
||||
def exam_overview(request, pk):
|
||||
print(type(pk))
|
||||
print(Exam.objects.all())
|
||||
exams = Exam.objects.all()
|
||||
print("test", Exam.objects.all().get(id=pk))
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
print("exam", exam)
|
||||
|
||||
questions = exam.exam_questions.all()
|
||||
|
||||
question_number = len(questions)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"physics/exam_overview.html",
|
||||
{"exam": exam, "questions": questions, "question_number": question_number},
|
||||
)
|
||||
|
||||
|
||||
def exam_toggle_results_published(request, pk):
|
||||
if request.is_ajax() and request.method == "POST":
|
||||
|
||||
exam = get_object_or_404(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(request, pk):
|
||||
if request.is_ajax() and request.method == "POST":
|
||||
|
||||
exam = get_object_or_404(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(request):
|
||||
exams = Exam.objects.all()
|
||||
print(exams)
|
||||
@@ -289,26 +229,6 @@ def exam_take(request, pk):
|
||||
)
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
def postExamAnswers(request):
|
||||
if request.is_ajax and request.method == "POST":
|
||||
|
||||
n = 0
|
||||
# horrible but it works
|
||||
for k in request.POST.dict():
|
||||
print(k)
|
||||
ret = loadJsonAnswer(json.loads(k))
|
||||
|
||||
if ret is not True:
|
||||
return ret
|
||||
|
||||
# print(UserAnswer.objects.filter(exam__id=q["eid"]))
|
||||
# print(request.urlencode())
|
||||
|
||||
return JsonResponse({"success": True})
|
||||
return JsonResponse({"success": False, "error": "Invalid data"})
|
||||
|
||||
|
||||
def loadJsonAnswer(answer):
|
||||
# As access is not restricted make sure the data appears valid
|
||||
if (not isinstance(answer["cid"], int)) or (not isinstance(answer["eid"], int)):
|
||||
@@ -364,3 +284,5 @@ def loadJsonAnswer(answer):
|
||||
ans.save()
|
||||
|
||||
return True
|
||||
|
||||
PhysicsExamViews = ExamViews(Exam, "physics", "physics", loadJsonAnswer)
|
||||
Reference in New Issue
Block a user