feat: 增加examdetail serializer

This commit is contained in:
caoqianming 2024-06-03 08:40:28 +08:00
parent 62b012b690
commit f5428febf3
2 changed files with 13 additions and 4 deletions

View File

@ -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):

View File

@ -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):
'''