This commit is contained in:
Ross
2021-04-28 12:14:22 +01:00
parent 142af1a567
commit 263b907e61
5 changed files with 60 additions and 16 deletions
+11
View File
@@ -0,0 +1,11 @@
# serializers.py
from rest_framework import serializers, permissions
from .models import Exam
class ExamSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Exam
fields = ('name', 'id', 'active', "publish_results")
permission_classes = [permissions.IsAuthenticated]
+19
View File
@@ -66,6 +66,11 @@ from django.template.defaulttags import register
from generic.mixins import SuperuserRequiredMixin
from rest_framework import viewsets
from .serializers import ExamSerializer
class AuthorOrCheckerRequiredMixin(object):
def get_object(self, *args, **kwargs):
obj = super().get_object(*args, **kwargs)
@@ -989,3 +994,17 @@ class ExamCreate(LoginRequiredMixin, CreateView):
class ExamUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView):
model = Exam
form_class = ExamForm
class ExamViewSet(viewsets.ModelViewSet):
#queryset = Exam.objects.all().order_by('name')
serializer_class = ExamSerializer
def get_queryset(self):
"""
This view should return a list exams available to a user.
"""
user = self.request.user
if user.groups.filter(name="rapid_checker").exists():
return Exam.objects.all()
return Exam.objects.filter(author__id=user.id)
+3
View File
@@ -2,13 +2,16 @@ from django.urls import path, include
from . import views
from rapids import views as rapid_views
from anatomy import views as anatomy_views
from longs import views as long_views
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'rapids/exams', rapid_views.ExamViewSet, basename="rapid-exams")
router.register(r'anatomy/exams', anatomy_views.ExamViewSet, basename="anatomy-exams")
router.register(r'longs/exams', long_views.ExamViewSet, basename="long-exams")
router.register(r'rapids/answers', rapid_views.QuestionAnswerViewSet, basename="rapid-question-answers")
app_name = "generic"
+7 -1
View File
@@ -2,10 +2,16 @@
from rest_framework import serializers, permissions
from .models import Exam
from .models import Exam, Answer
class ExamSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Exam
fields = ('name', 'id', 'active', "publish_results")
permission_classes = [permissions.IsAuthenticated]
class QuestionAnswerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Answer
fields = ('id', 'question', 'answer', "anwer_compare", "status")
permission_classes = [permissions.IsAuthenticated]
+20 -15
View File
@@ -69,7 +69,7 @@ from rapids.models import RapidCreationDefault
from rest_framework import viewsets
from .serializers import ExamSerializer
from .serializers import ExamSerializer, QuestionAnswerSerializer
from generic.mixins import SuperuserRequiredMixin
@@ -926,19 +926,6 @@ class QuestionDelete(AuthorOrCheckerRequiredMixin, DeleteView):
RapidExamViews = ExamViews(Exam, Rapid, "rapids", "rapid", loadJsonAnswer)
class ExamViewSet(viewsets.ModelViewSet):
#queryset = Exam.objects.all().order_by('name')
serializer_class = ExamSerializer
def get_queryset(self):
"""
This view should return a list exams available to a user.
"""
user = self.request.user
if user.groups.filter(name="rapid_checker").exists():
return Exam.objects.all()
return Exam.objects.filter(author__id=user.id)
class ExamCreate(LoginRequiredMixin, CreateView):
model = Exam
@@ -957,4 +944,22 @@ class RapidUserAnswerView(LoginRequiredMixin, SingleTableMixin, FilterView):
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
model = CidUserAnswer
success_url = reverse_lazy("rapids:rapid_user_answer_view")
success_url = reverse_lazy("rapids:rapid_user_answer_view")
class ExamViewSet(viewsets.ModelViewSet):
#queryset = Exam.objects.all().order_by('name')
serializer_class = ExamSerializer
def get_queryset(self):
"""
This view should return a list exams available to a user.
"""
user = self.request.user
if user.groups.filter(name="rapid_checker").exists():
return Exam.objects.all()
return Exam.objects.filter(author__id=user.id)
class QuestionAnswerViewSet(viewsets.ModelViewSet):
#queryset = Exam.objects.all().order_by('name')
serializer_class = QuestionAnswerSerializer