.
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 generic.mixins import SuperuserRequiredMixin
|
||||||
|
|
||||||
|
from rest_framework import viewsets
|
||||||
|
|
||||||
|
from .serializers import ExamSerializer
|
||||||
|
|
||||||
|
|
||||||
class AuthorOrCheckerRequiredMixin(object):
|
class AuthorOrCheckerRequiredMixin(object):
|
||||||
def get_object(self, *args, **kwargs):
|
def get_object(self, *args, **kwargs):
|
||||||
obj = super().get_object(*args, **kwargs)
|
obj = super().get_object(*args, **kwargs)
|
||||||
@@ -989,3 +994,17 @@ class ExamCreate(LoginRequiredMixin, CreateView):
|
|||||||
class ExamUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView):
|
class ExamUpdate(LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView):
|
||||||
model = Exam
|
model = Exam
|
||||||
form_class = ExamForm
|
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 . import views
|
||||||
|
|
||||||
from rapids import views as rapid_views
|
from rapids import views as rapid_views
|
||||||
|
from anatomy import views as anatomy_views
|
||||||
from longs import views as long_views
|
from longs import views as long_views
|
||||||
|
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register(r'rapids/exams', rapid_views.ExamViewSet, basename="rapid-exams")
|
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'longs/exams', long_views.ExamViewSet, basename="long-exams")
|
||||||
|
router.register(r'rapids/answers', rapid_views.QuestionAnswerViewSet, basename="rapid-question-answers")
|
||||||
|
|
||||||
app_name = "generic"
|
app_name = "generic"
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,16 @@
|
|||||||
from rest_framework import serializers, permissions
|
from rest_framework import serializers, permissions
|
||||||
|
|
||||||
|
|
||||||
from .models import Exam
|
from .models import Exam, Answer
|
||||||
|
|
||||||
class ExamSerializer(serializers.HyperlinkedModelSerializer):
|
class ExamSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Exam
|
model = Exam
|
||||||
fields = ('name', 'id', 'active', "publish_results")
|
fields = ('name', 'id', 'active', "publish_results")
|
||||||
permission_classes = [permissions.IsAuthenticated]
|
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 rest_framework import viewsets
|
||||||
|
|
||||||
from .serializers import ExamSerializer
|
from .serializers import ExamSerializer, QuestionAnswerSerializer
|
||||||
|
|
||||||
from generic.mixins import SuperuserRequiredMixin
|
from generic.mixins import SuperuserRequiredMixin
|
||||||
|
|
||||||
@@ -926,19 +926,6 @@ class QuestionDelete(AuthorOrCheckerRequiredMixin, DeleteView):
|
|||||||
|
|
||||||
RapidExamViews = ExamViews(Exam, Rapid, "rapids", "rapid", loadJsonAnswer)
|
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):
|
class ExamCreate(LoginRequiredMixin, CreateView):
|
||||||
model = Exam
|
model = Exam
|
||||||
@@ -957,4 +944,22 @@ class RapidUserAnswerView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
|||||||
|
|
||||||
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
|
class UserAnswerDelete(SuperuserRequiredMixin, DeleteView):
|
||||||
model = CidUserAnswer
|
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