feat: 增加examdetail serializer
This commit is contained in:
parent
62b012b690
commit
f5428febf3
|
@ -87,6 +87,14 @@ class ExamSerializer(CustomModelSerializer):
|
|||
validated_data.pop("paper", None)
|
||||
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):
|
||||
|
|
|
@ -8,7 +8,7 @@ from django.db import transaction
|
|||
from .models import Questioncat, Question, Paper, PaperQuestion, Exam, ExamRecord, AnswerDetail
|
||||
from .serializers import (QuestioncatSerializer, QuestionSerializer, ExamSerializer,
|
||||
ExamRecordInitSerizlier, ExamRecordSerializer, ExamRecordDetailSerializer, ExamRecordSubmitSerializer,
|
||||
PaperSerializer, PaperListSerializer, PaperPatchSerializer)
|
||||
PaperSerializer, PaperListSerializer, PaperPatchSerializer, ExamDetailSerializer)
|
||||
from django.utils import timezone
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
|
@ -51,13 +51,14 @@ class ExamViewSet(CustomModelViewSet):
|
|||
queryset = Exam.objects.all()
|
||||
serializer_class = ExamSerializer
|
||||
filterset_class = ExamFilter
|
||||
retrieve_serializer_class = ExamDetailSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
qs = super().get_queryset()
|
||||
if has_perm(self.request.user, 'exam.view'):
|
||||
return qs
|
||||
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|qs.filter(p_users=user)
|
||||
if dept:
|
||||
|
@ -71,7 +72,7 @@ class ExamViewSet(CustomModelViewSet):
|
|||
return super().destroy(request, *args, **kwargs)
|
||||
|
||||
@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):
|
||||
"""
|
||||
参加考试
|
||||
|
@ -129,7 +130,7 @@ class ExamRecordViewSet(ListModelMixin, DestroyModelMixin, RetrieveModelMixin, C
|
|||
|
||||
|
||||
@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
|
||||
def submit(self, request, pk=None):
|
||||
'''
|
||||
|
|
Loading…
Reference in New Issue