.
This commit is contained in:
@@ -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]
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
Reference in New Issue
Block a user