continue unifying views
This commit is contained in:
+11
-11
@@ -5,7 +5,7 @@ app_name = "rapids"
|
||||
|
||||
urlpatterns = [
|
||||
# path('', views.question_list, name='question_list'),
|
||||
path("", views.index, name="index"),
|
||||
path("", views.RapidExamViews.index, name="index"),
|
||||
path("author/<int:pk>/", views.author_detail, name="author_detail"),
|
||||
path("author/", views.author_list, name="author_list"),
|
||||
path("question/", views.RapidView.as_view(), name="rapid_view"),
|
||||
@@ -18,22 +18,22 @@ urlpatterns = [
|
||||
#path("all_questions/", views.all_questions, name="all_questions"),
|
||||
path("question/<int:pk>/scrap", views.rapid_scrap, name="rapid_scrap"),
|
||||
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>/mark", views.RapidExamViews.mark_overview, name="mark_overview"),
|
||||
# path("exam/<int:pk>/<int:sk>/", views.exam_take, name="exam_take"),
|
||||
path("exam/<int:pk>/question/<int:sk>/", views.exam_question_detail, name="exam_question_detail"),
|
||||
path("exam/<int:pk>/", views.exam_overview, name="exam_overview"),
|
||||
path("exam/<int:pk>/json_edit", views.exam_json_edit, name="exam_json_edit"),
|
||||
path("exam/<int:pk>/question/<int:sk>/", views.RapidExamViews.exam_question_detail, name="exam_question_detail"),
|
||||
path("exam/<int:pk>/", views.RapidExamViews.exam_overview, name="exam_overview"),
|
||||
path("exam/<int:pk>/json_edit", views.RapidExamViews.exam_json_edit, name="exam_json_edit"),
|
||||
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/json/", views.active_exams, name="active_exams"),
|
||||
path("exam/<int:pk>/toggle_active", views.RapidExamViews.exam_toggle_active, name="exam_toggle_active"),
|
||||
path("exam/<int:pk>/toggle_results_published", views.RapidExamViews.exam_toggle_results_published, name="exam_toggle_results_published"),
|
||||
path("exam/submit", views.RapidExamViews.postExamAnswers, name="exam_answers_submit"),
|
||||
path("exam/", views.RapidExamViews.exam_list, name="exam_list"),
|
||||
path("exam/json/", views.RapidExamViews.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"),
|
||||
path("exam/json/<int:pk>/recreate", views.RapidExamViews.exam_json_recreate, name="exam_json_recreate"),
|
||||
path("create/", views.RapidCreate.as_view(), name="rapid_create"),
|
||||
path("create/defaults",
|
||||
views.RapidCreationDefaultView.as_view(),
|
||||
|
||||
+4
-188
@@ -39,6 +39,9 @@ from .models import (
|
||||
Answer,
|
||||
CidUserAnswer,
|
||||
)
|
||||
|
||||
from generic.views import ExamViews
|
||||
|
||||
from .tables import RapidTable
|
||||
from .filters import RapidFilter
|
||||
|
||||
@@ -75,20 +78,6 @@ class AuthorOrCheckerRequiredMixin(object):
|
||||
return obj
|
||||
|
||||
|
||||
@login_required
|
||||
def index(request):
|
||||
exams = Exam.objects.all()
|
||||
return render(request, "rapids/index.html", {"exams": exams})
|
||||
|
||||
|
||||
# def index(request):
|
||||
# other_rapids = Rapid.objects.exclude(author=request.user.pk)
|
||||
# user_rapids = Rapid.objects.filter(author=request.user.pk)
|
||||
# return render(
|
||||
# request,
|
||||
# "rapids/index.html",
|
||||
# {"other_rapids": other_rapids, "user_rapids": user_rapids},
|
||||
# )
|
||||
|
||||
|
||||
@login_required
|
||||
@@ -564,63 +553,6 @@ def loadJsonAnswer(answer):
|
||||
return True
|
||||
|
||||
|
||||
def exam_json_edit(request, pk):
|
||||
if request.is_ajax() and request.method == "POST":
|
||||
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
if request.POST.get("set_open_access") == "true":
|
||||
state = True
|
||||
else:
|
||||
state = False
|
||||
|
||||
questions_changed = []
|
||||
for q in exam.exam_questions.all():
|
||||
q.open_access = state
|
||||
q.save()
|
||||
questions_changed.append(q.pk)
|
||||
|
||||
data = {"status": "success", "questions": questions_changed, "state": state}
|
||||
return JsonResponse(data, status=200)
|
||||
else:
|
||||
data = {"status": "error"}
|
||||
return JsonResponse(data, status=400)
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
def postExamAnswers(request):
|
||||
if request.is_ajax and request.method == "POST":
|
||||
|
||||
n = 0
|
||||
|
||||
for answer in json.loads(request.POST.get("answers")):
|
||||
ret = loadJsonAnswer(answer)
|
||||
|
||||
#if ret is not True:
|
||||
# return ret
|
||||
|
||||
if ret:
|
||||
n = n + 1
|
||||
|
||||
# print(UserAnswer.objects.filter(exam__id=q["eid"]))
|
||||
# print(request.urlencode())
|
||||
|
||||
return JsonResponse({"success": True, "question_count": n})
|
||||
return JsonResponse({"success": False, "error": "Invalid data"})
|
||||
|
||||
|
||||
# @user_passes_test(user_is_admin, login_url="/accounts/login")
|
||||
@login_required
|
||||
def mark_overview(request, pk):
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
questions = exam.exam_questions.all()
|
||||
|
||||
return render(
|
||||
request, "rapids/mark_overview.html", {"exam": exam, "questions": questions}
|
||||
)
|
||||
|
||||
|
||||
# @user_passes_test(user_is_admin, login_url="/accounts/login")
|
||||
@login_required
|
||||
def mark(request, pk, sk):
|
||||
@@ -767,57 +699,6 @@ def mark(request, pk, sk):
|
||||
)
|
||||
|
||||
|
||||
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, json=True):
|
||||
exams = 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": "rapid",
|
||||
}
|
||||
)
|
||||
|
||||
if json == False:
|
||||
return active_exams["exams"]
|
||||
|
||||
return JsonResponse(active_exams)
|
||||
|
||||
|
||||
def exam_json(request, pk):
|
||||
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
@@ -885,16 +766,6 @@ def exam_json(request, pk):
|
||||
return JsonResponse(exam_json)
|
||||
|
||||
|
||||
@login_required
|
||||
def exam_json_recreate(request, pk):
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
exam.recreate_json = True
|
||||
exam.save()
|
||||
|
||||
return redirect("rapids:exam_overview", pk=pk)
|
||||
|
||||
|
||||
@login_required
|
||||
def exam_scores_cid(request, pk):
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
@@ -1067,60 +938,5 @@ def exam_scores_cid_user(request, pk, sk):
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def exam_question_detail(request, pk, sk):
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
question = exam.exam_questions.all()[sk]
|
||||
|
||||
exam_length = len(exam.exam_questions.all())
|
||||
|
||||
pos = exam.get_question_index(question) + 1
|
||||
|
||||
print(question.exams.through.sort_value)
|
||||
|
||||
previous = -1
|
||||
if sk > 0:
|
||||
previous = sk - 1
|
||||
next = sk + 1
|
||||
if sk == exam_length - 1:
|
||||
next = False
|
||||
|
||||
return render(
|
||||
request,
|
||||
"rapids/rapid_detail.html",
|
||||
{
|
||||
"question": question,
|
||||
"exam": exam,
|
||||
"next": next,
|
||||
"previous": previous,
|
||||
"exam_length": exam_length,
|
||||
"pos": pos,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def exam_list(request):
|
||||
exams = Exam.objects.all()
|
||||
return render(request, "rapids/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,
|
||||
"rapids/exam_overview.html",
|
||||
{"exam": exam, "questions": questions, "question_number": question_number},
|
||||
)
|
||||
RapidExamViews = ExamViews(Exam, "rapids", "rapid", loadJsonAnswer)
|
||||
Reference in New Issue
Block a user