.
This commit is contained in:
+42
-1
@@ -688,4 +688,45 @@ class GenericViewBase:
|
||||
for id in answer_ids:
|
||||
self.cid_user_answer_object.objects.get(pk=id).delete()
|
||||
return JsonResponse({"status": "success"})
|
||||
return JsonResponse({"status": "error"})
|
||||
return JsonResponse({"status": "error"})
|
||||
|
||||
@login_required
|
||||
def question_detail(self, request, pk):
|
||||
question = get_object_or_404(self.question_object, pk=pk)
|
||||
|
||||
if not question.open_access:
|
||||
if (
|
||||
not request.user.groups.filter(name="rapid_checker").exists()
|
||||
and request.user not in question.author.all()
|
||||
):
|
||||
raise PermissionDenied()
|
||||
# if request.user not in rapid.author.all():
|
||||
# raise PermissionDenied
|
||||
|
||||
view_feedback = False
|
||||
if (
|
||||
request.user.groups.filter(name="rapid_checker").exists()
|
||||
or request.user.groups.filter(name="feedback_checker").exists()
|
||||
or request.user in question.author.all()
|
||||
):
|
||||
view_feedback = True
|
||||
|
||||
# logging.debug(rapid.subspecialty.first().name.all())
|
||||
return render(
|
||||
request,
|
||||
f"{self.app_name}/question_detail.html",
|
||||
{"question": question, "view_feedback": view_feedback},
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def question_user_answers(self, request, pk):
|
||||
question = get_object_or_404(self.question_object, pk=pk)
|
||||
|
||||
answers = self.cid_user_answer_object.objects.filter(question__id=rapid.pk)
|
||||
|
||||
return render(
|
||||
request,
|
||||
f"{self.app_name}/question_user_answers.html",
|
||||
{"question": question, "answers": answers},
|
||||
)
|
||||
+4
-4
@@ -15,7 +15,7 @@ urlpatterns = [
|
||||
# path("unchecked/", views.unchecked_list, name="unchecked_list"),
|
||||
# path("verified/<int:pk>/", views.verified_detail, name="verified_detail"),
|
||||
path(
|
||||
"question/<int:pk>/", views.question_detail, name="question_detail"
|
||||
"question/<int:pk>/", views.GenericViews.question_detail, name="question_detail"
|
||||
), # path("question/<int:pk>/json", views.question_json, name="question_json"),
|
||||
path(
|
||||
"question/<int:pk>/save_annotation",
|
||||
@@ -34,12 +34,12 @@ urlpatterns = [
|
||||
),
|
||||
path(
|
||||
"question/<int:pk>/user_answers",
|
||||
views.question_user_answers,
|
||||
views.GenericViews.question_user_answers,
|
||||
name="question_user_answers",
|
||||
),
|
||||
path(
|
||||
"exam/<int:pk>/review",
|
||||
views.question_review,
|
||||
views.GenericViews.question_review,
|
||||
name="question_review",
|
||||
),
|
||||
path("exam/<int:pk>/<int:sk>/mark", views.mark, name="mark"),
|
||||
@@ -144,7 +144,7 @@ urlpatterns = [
|
||||
),
|
||||
path(
|
||||
"user_answers/delete",
|
||||
views.user_answer_delete_multiple,
|
||||
views.GenericViews.user_answer_delete_multiple,
|
||||
name="user_answer_delete_multiple",
|
||||
),
|
||||
]
|
||||
|
||||
+2
-73
@@ -40,7 +40,7 @@ from .models import (
|
||||
CidUserAnswer,
|
||||
)
|
||||
|
||||
from generic.views import ExamViews
|
||||
from generic.views import ExamViews, GenericViewBase
|
||||
|
||||
from reversion.views import RevisionMixin
|
||||
|
||||
@@ -113,48 +113,6 @@ class AuthorOrCheckerRequiredMixin(object):
|
||||
raise PermissionDenied() # or Http404
|
||||
return obj
|
||||
|
||||
|
||||
@login_required
|
||||
def question_detail(request, pk):
|
||||
rapid = get_object_or_404(Rapid, pk=pk)
|
||||
|
||||
if not rapid.open_access:
|
||||
if (
|
||||
not request.user.groups.filter(name="rapid_checker").exists()
|
||||
and request.user not in rapid.author.all()
|
||||
):
|
||||
raise PermissionDenied()
|
||||
# if request.user not in rapid.author.all():
|
||||
# raise PermissionDenied
|
||||
|
||||
view_feedback = False
|
||||
if (
|
||||
request.user.groups.filter(name="rapid_checker").exists()
|
||||
or request.user.groups.filter(name="feedback_checker").exists()
|
||||
or request.user in rapid.author.all()
|
||||
):
|
||||
view_feedback = True
|
||||
|
||||
# logging.debug(rapid.subspecialty.first().name.all())
|
||||
return render(
|
||||
request,
|
||||
"rapids/question_detail.html",
|
||||
{"question": rapid, "view_feedback": view_feedback},
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def question_user_answers(request, pk):
|
||||
rapid = get_object_or_404(Rapid, pk=pk)
|
||||
|
||||
answers = CidUserAnswer.objects.filter(question__id=rapid.pk)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"rapids/question_user_answers.html",
|
||||
{"question": rapid, "answers": answers},
|
||||
)
|
||||
|
||||
@login_required
|
||||
def rapid_split(request, pk):
|
||||
rapid = get_object_or_404(Rapid, pk=pk)
|
||||
@@ -1128,37 +1086,8 @@ class RapidLateralityViewSet(
|
||||
# return { "content_type" : content_type,
|
||||
# "object_id" : pk }
|
||||
|
||||
@user_passes_test(lambda u: u.is_superuser)
|
||||
def user_answer_delete_multiple(request):
|
||||
if request.is_ajax():
|
||||
print(request.POST["answer_ids"])
|
||||
answer_ids = json.loads(request.POST["answer_ids"])
|
||||
GenericViews = GenericViewBase("rapids", Rapid, CidUserAnswer, Exam)
|
||||
|
||||
# We could probably delete them all at once....
|
||||
for id in answer_ids:
|
||||
CidUserAnswer.objects.get(pk=id).delete()
|
||||
return JsonResponse({"status": "success"})
|
||||
return JsonResponse({"status": "error"})
|
||||
|
||||
|
||||
def question_review(request, pk):
|
||||
"""
|
||||
Return a json representation of the question when the exam is active
|
||||
"""
|
||||
if request.is_ajax():
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
print(request.POST["question_number"])
|
||||
print(type(request.POST["question_number"]))
|
||||
|
||||
if not exam.publish_results:
|
||||
raise Http404
|
||||
|
||||
question = exam.exam_questions.all()[int(request.POST["question_number"])]
|
||||
|
||||
question_json = question.get_question_json(based=False)
|
||||
return JsonResponse(question_json)
|
||||
return JsonResponse({"status": "error"})
|
||||
|
||||
@user_is_author_or_rapid_checker
|
||||
def question_save_annotation(request, pk):
|
||||
|
||||
Reference in New Issue
Block a user