From 263b907e6124a97f9fd9260a85792363fb85e311 Mon Sep 17 00:00:00 2001 From: Ross Date: Wed, 28 Apr 2021 12:14:22 +0100 Subject: [PATCH] . --- anatomy/serializers.py | 11 +++++++++++ anatomy/views.py | 19 +++++++++++++++++++ generic/urls.py | 3 +++ rapids/serializers.py | 8 +++++++- rapids/views.py | 35 ++++++++++++++++++++--------------- 5 files changed, 60 insertions(+), 16 deletions(-) create mode 100644 anatomy/serializers.py diff --git a/anatomy/serializers.py b/anatomy/serializers.py new file mode 100644 index 00000000..5e5585fa --- /dev/null +++ b/anatomy/serializers.py @@ -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] diff --git a/anatomy/views.py b/anatomy/views.py index d980faf0..8a1e94c5 100644 --- a/anatomy/views.py +++ b/anatomy/views.py @@ -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) \ No newline at end of file diff --git a/generic/urls.py b/generic/urls.py index 0dd35dcc..796c80a6 100755 --- a/generic/urls.py +++ b/generic/urls.py @@ -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" diff --git a/rapids/serializers.py b/rapids/serializers.py index 5e5585fa..18a55dfb 100644 --- a/rapids/serializers.py +++ b/rapids/serializers.py @@ -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] \ No newline at end of file diff --git a/rapids/views.py b/rapids/views.py index b08c79c9..33ea6a58 100755 --- a/rapids/views.py +++ b/rapids/views.py @@ -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") \ No newline at end of file + 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 \ No newline at end of file