This commit is contained in:
Ross
2021-12-12 13:52:21 +00:00
parent 3320132b88
commit 8691868bd8
3 changed files with 9 additions and 2 deletions
+3
View File
@@ -204,6 +204,9 @@ class CidUser(models.Model):
def __str__(self) -> str: def __str__(self) -> str:
return str(self.cid) return str(self.cid)
def check_passcode(self, passcode) -> bool:
return self.passcode == passcode
class CidUserExam(models.Model): class CidUserExam(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField() object_id = models.PositiveIntegerField()
+5 -1
View File
@@ -613,6 +613,11 @@ class ExamViews(View, LoginRequiredMixin):
active_exams = {"exams": []} active_exams = {"exams": []}
if cid is not None:
cid_user = CidUser.objects.filter(cid=cid).first()
if not cid_user or cid_user.passcode != passcode:
return JsonResponse({"status": "invalid"}, status=401)
for exam in exams: for exam in exams:
if exam.active or self.check_user_access(request.user, exam.pk): if exam.active or self.check_user_access(request.user, exam.pk):
if not exam.check_cid_user(cid, passcode): if not exam.check_cid_user(cid, passcode):
@@ -966,7 +971,6 @@ def manage_cid_users(request):
selected_cids = json.loads(request.POST.get("selected_cids")) selected_cids = json.loads(request.POST.get("selected_cids"))
number_to_create = int(request.POST.get("number_to_create")) number_to_create = int(request.POST.get("number_to_create"))
delete = request.POST.get("delete") delete = request.POST.get("delete")
+1 -1
View File
@@ -60,7 +60,7 @@ urlpatterns = [
path("cid/", views.cid_selector, name="cid_selector"), path("cid/", views.cid_selector, name="cid_selector"),
# Global url that registers RTS compatible exams # Global url that registers RTS compatible exams
path("exam/json/", views.active_exams, name="active_exams"), path("exam/json/", views.active_exams, name="active_exams"),
path("exam/json/<int:pk>/<str:passcode>", views.active_exams, name="active_exams_cid"), path("exam/json/<int:cid>/<str:passcode>", views.active_exams, name="active_exams_cid"),
path("exam/json/unbased", views.active_exams_unbased, name="active_exams_unbased"), path("exam/json/unbased", views.active_exams_unbased, name="active_exams_unbased"),
path("exam/submit", views.exam_submit, name="global_exam_answers_submit"), path("exam/submit", views.exam_submit, name="global_exam_answers_submit"),
#path('', include('generic.urls')), #path('', include('generic.urls')),