improve exam collections management
This commit is contained in:
+29
-16
@@ -759,24 +759,36 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
return HttpResponse("Done")
|
||||
|
||||
@method_decorator(login_required)
|
||||
def exam_list(self, request, all=False):
|
||||
if not self.check_user_access(request.user):
|
||||
# raise PermissionDenied
|
||||
exam_list = self.Exam.objects.filter(
|
||||
author__id=request.user.id, exam_mode=True
|
||||
).order_by("name")
|
||||
def exam_list_collection(self, request, collection_id):
|
||||
collection = get_object_or_404(ExamCollection, pk=collection_id)
|
||||
|
||||
exam_list = exam_list | self.Exam.objects.filter(
|
||||
markers__id=request.user.id, exam_mode=True
|
||||
).order_by("name")
|
||||
else:
|
||||
exam_list = (
|
||||
self.Exam.objects.prefetch_related(
|
||||
"valid_user_users", "valid_cid_users"
|
||||
if not request.user in collection.author.all():
|
||||
raise PermissionDenied
|
||||
|
||||
return self.exam_list(request, all=True, collection=collection)
|
||||
|
||||
@method_decorator(login_required)
|
||||
def exam_list(self, request, all=False, collection=None):
|
||||
if collection is None:
|
||||
if not self.check_user_access(request.user):
|
||||
# raise PermissionDenied
|
||||
exam_list = self.Exam.objects.filter(
|
||||
author__id=request.user.id, exam_mode=True
|
||||
).order_by("name")
|
||||
|
||||
exam_list = exam_list | self.Exam.objects.filter(
|
||||
markers__id=request.user.id, exam_mode=True
|
||||
).order_by("name")
|
||||
else:
|
||||
exam_list = (
|
||||
self.Exam.objects.prefetch_related(
|
||||
"valid_user_users", "valid_cid_users"
|
||||
)
|
||||
.filter(exam_mode=True)
|
||||
.order_by("name")
|
||||
)
|
||||
.filter(exam_mode=True)
|
||||
.order_by("name")
|
||||
)
|
||||
else:
|
||||
exam_list = self.Exam.objects.filter(exam_mode=True, examcollection__in=[collection]).order_by("name")
|
||||
|
||||
if not all:
|
||||
exam_list = exam_list.filter(archive=False).order_by("name")
|
||||
@@ -794,6 +806,7 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
"app_name": self.app_name,
|
||||
"view_all": all,
|
||||
"marking": marking,
|
||||
"collection": collection,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user