feat: 增加examdetail serializer
This commit is contained in:
parent
62b012b690
commit
f5428febf3
|
@ -87,6 +87,14 @@ class ExamSerializer(CustomModelSerializer):
|
||||||
validated_data.pop("paper", None)
|
validated_data.pop("paper", None)
|
||||||
return super().update(instance, validated_data)
|
return super().update(instance, validated_data)
|
||||||
|
|
||||||
|
class ExamDetailSerializer(CustomModelSerializer):
|
||||||
|
paper_ = PaperSerializer(source='paper')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Exam
|
||||||
|
fields = "__all__"
|
||||||
|
read_only_fields = EXCLUDE_FIELDS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class AnswerDetailOutSerializer(CustomModelSerializer):
|
class AnswerDetailOutSerializer(CustomModelSerializer):
|
||||||
|
|
|
@ -8,7 +8,7 @@ from django.db import transaction
|
||||||
from .models import Questioncat, Question, Paper, PaperQuestion, Exam, ExamRecord, AnswerDetail
|
from .models import Questioncat, Question, Paper, PaperQuestion, Exam, ExamRecord, AnswerDetail
|
||||||
from .serializers import (QuestioncatSerializer, QuestionSerializer, ExamSerializer,
|
from .serializers import (QuestioncatSerializer, QuestionSerializer, ExamSerializer,
|
||||||
ExamRecordInitSerizlier, ExamRecordSerializer, ExamRecordDetailSerializer, ExamRecordSubmitSerializer,
|
ExamRecordInitSerizlier, ExamRecordSerializer, ExamRecordDetailSerializer, ExamRecordSubmitSerializer,
|
||||||
PaperSerializer, PaperListSerializer, PaperPatchSerializer)
|
PaperSerializer, PaperListSerializer, PaperPatchSerializer, ExamDetailSerializer)
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
@ -51,13 +51,14 @@ class ExamViewSet(CustomModelViewSet):
|
||||||
queryset = Exam.objects.all()
|
queryset = Exam.objects.all()
|
||||||
serializer_class = ExamSerializer
|
serializer_class = ExamSerializer
|
||||||
filterset_class = ExamFilter
|
filterset_class = ExamFilter
|
||||||
|
retrieve_serializer_class = ExamDetailSerializer
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
qs = super().get_queryset()
|
qs = super().get_queryset()
|
||||||
if has_perm(self.request.user, 'exam.view'):
|
if has_perm(self.request.user, 'exam.view'):
|
||||||
return qs
|
return qs
|
||||||
user:User = self.request.user
|
user:User = self.request.user
|
||||||
dept = user.belong_dept
|
dept = user.belong_dept if user else None
|
||||||
qs = qs.filter(is_public=True)
|
qs = qs.filter(is_public=True)
|
||||||
qs = qs|qs.filter(p_users=user)
|
qs = qs|qs.filter(p_users=user)
|
||||||
if dept:
|
if dept:
|
||||||
|
@ -71,7 +72,7 @@ class ExamViewSet(CustomModelViewSet):
|
||||||
return super().destroy(request, *args, **kwargs)
|
return super().destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
@swagger_auto_schema(request_body=Serializer, responses={200: ExamRecordInitSerizlier})
|
@swagger_auto_schema(request_body=Serializer, responses={200: ExamRecordInitSerizlier})
|
||||||
@action(methods=['post'], detail=True, perms_map=[{'post': '*'}], serializer_class=Serializer)
|
@action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=Serializer)
|
||||||
def attend(self, request, *args, **kwargs):
|
def attend(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
参加考试
|
参加考试
|
||||||
|
@ -129,7 +130,7 @@ class ExamRecordViewSet(ListModelMixin, DestroyModelMixin, RetrieveModelMixin, C
|
||||||
|
|
||||||
|
|
||||||
@swagger_auto_schema(request_body=ExamRecordSubmitSerializer, responses={200: ExamRecordSerializer})
|
@swagger_auto_schema(request_body=ExamRecordSubmitSerializer, responses={200: ExamRecordSerializer})
|
||||||
@action(methods=['post'], detail=True, perms_map=[{'post': '*'}], serializer_class=ExamRecordSubmitSerializer, permission_classes = [IsAuthenticated])
|
@action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=ExamRecordSubmitSerializer, permission_classes = [IsAuthenticated])
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def submit(self, request, pk=None):
|
def submit(self, request, pk=None):
|
||||||
'''
|
'''
|
||||||
|
|
Loading…
Reference in New Issue