12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # coding=utf-8
- from rest_framework import serializers
- from .models import Exam, ExamLog
- from utils.exceptions import CustomError
- class ExamSerializer(serializers.ModelSerializer):
- subject_name = serializers.CharField(source='subject.name', read_only=True)
- type_text = serializers.CharField(source='get_type_display', read_only=True)
- create_user_text = serializers.CharField(source='create_user.username', read_only=True)
- question_total_scores = serializers.IntegerField(source='exampaper.question_total_scores', read_only=True)
- passline = serializers.IntegerField(source='exampaper.passline', read_only=True)
- exampaper_name = serializers.CharField(source='exampaper.name', read_only=True)
- examinee_name = serializers.SerializerMethodField()
- class Meta:
- model = Exam
- fields = "__all__"
- def get_examinee_name(self, obj):
- examinees = ExamLog.objects.filter(exam=obj, delete=False).values('user__username')
- examinee_list = [item['user__username'] for item in examinees]
- if examinee_list:
- return ','.join(examinee_list)
- return ''
- def create(self, validated_data):
- validated_data['create_user'] = self.context['request'].user
- instance = super(ExamSerializer, self).create(validated_data)
- return instance
- def update(self, instance, validated_data):
- if instance.delete:
- raise CustomError(u'考试[%s]已经被删除,禁止操作' % instance.name)
- instance = super(ExamSerializer, self).update(instance, validated_data)
- instance.change_examtime()
- instance.save()
- return instance
- class FormalExamLogSerializer(serializers.ModelSerializer):
- exam_name = serializers.CharField(source='exam.name', read_only=True)
- exam_subject_name = serializers.CharField(source='exam.subject.name', read_only=True)
- class Meta:
- model = ExamLog
- fields = "__all__"
|