正式考试增加选定试卷

This commit is contained in:
曹前明 2022-08-11 21:50:55 +08:00
parent c23dc2726c
commit 2634d56036
4 changed files with 37 additions and 17 deletions

View File

@ -0,0 +1,19 @@
# Generated by Django 3.0.4 on 2022-08-11 12:56
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('examtest', '0036_auto_20220528_2203'),
]
operations = [
migrations.AddField(
model_name='exam',
name='paper',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='examtest.Paper', verbose_name='选定的试卷'),
),
]

View File

@ -23,7 +23,7 @@ class Exam(CommonModel):
train_name = models.CharField('培训名称', null=True, blank=True, max_length=50)
train_start_date = models.DateField('培训开始日期', null=True)
train_end_date = models.DateField('培训结束日期', null=True)
paper = models.ForeignKey(Paper, verbose_name='选定的试卷', on_delete=models.CASCADE, null=True, blank=True)
qdimgs = JSONField('签到图片', default=list)
xcimgs = JSONField('现场图片', default=list)

View File

@ -63,6 +63,7 @@ class ExamTestListSerializer(serializers.ModelSerializer):
paper_name = serializers.StringRelatedField(source='paper', read_only=True)
exam_name = serializers.StringRelatedField(source='exam', read_only=True)
consumer_name = serializers.SerializerMethodField()
consumer_username = serializers.CharField(source='consumer.username', read_only=True)
took_format = serializers.SerializerMethodField()
consumer_company_name = serializers.SerializerMethodField()
class Meta:
@ -168,7 +169,7 @@ class ExamCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Exam
fields = ['name', 'place', 'opentime', 'closetime', 'proctor_name', 'proctor_phone', 'workscope', 'chance',
'train_name', 'train_start_date', 'train_end_date']
'train_name', 'train_start_date', 'train_end_date', 'paper']
class ExamListSerializer(serializers.ModelSerializer):
create_admin_username = serializers.StringRelatedField(source='create_admin')
@ -254,5 +255,5 @@ class ExamTestExamListSerializer(serializers.ModelSerializer):
@staticmethod
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.select_related('candidate')
queryset = queryset.select_related('candidate', 'consumer')
return queryset

View File

@ -125,13 +125,19 @@ class ExamViewSet(ModelViewSet):
obj = Exam.objects.get(pk=kwargs['pk'])
workscope = obj.workscope
ret = {}
if workscope.name in ['医学Ⅲ类', '非医学Ⅲ类']:
ret['name'] = obj.name
ret['consumer_detail'] = request.data
ret['type'] = '正式考试' # 正式考试
ret['exam'] = kwargs['pk']
ret['exam_'] = ExamListSerializer(instance=obj).data
ret['workscope'] = workscope.id
ret['name'] = obj.name
ret['consumer_detail'] = request.data
ret['type'] = '正式考试' # 正式考试
ret['exam'] = kwargs['pk']
ret['exam_'] = ExamListSerializer(instance=obj).data
ret['workscope'] = workscope.id
if obj.paper:
serializer = PaperDetailSerializer(instance=obj.paper)
ret['paper'] = obj.paper.id
retx = serializer.data
retx.update(ret)
return Response(retx)
elif workscope.name in ['医学Ⅲ类', '非医学Ⅲ类']:
ret['limit'] = 45
ret['total_score'] = 120
ret['pass_score'] = 90
@ -159,12 +165,6 @@ class ExamViewSet(ModelViewSet):
ret['questions'] = questions
return Response(ret)
elif workscope.name in ['放射工作人员(上岗)', '放射工作人员(在岗)']:
ret['name'] = obj.name
ret['consumer_detail'] = request.data
ret['type'] = '正式考试' # 正式考试
ret['exam'] = kwargs['pk']
ret['exam_'] = ExamListSerializer(instance=obj).data
ret['workscope'] = workscope.id
ret['limit'] = workscope.rule.limit
ret['total_score'] = workscope.rule.total_score
ret['pass_score'] = workscope.rule.pass_score
@ -645,7 +645,7 @@ class ExamTestViewSet(PageOrNot, ModelViewSet):
return Response({"id":candidate.pk, "number":candidate.number, "path":path})
class PaperViewSet(ModelViewSet):
class PaperViewSet(PageOrNot, ModelViewSet):
"""
押题卷增删改查
"""