Browse Source

考试管理

jiaweiqi 3 years ago
parent
commit
cf1f262b40
2 changed files with 11 additions and 0 deletions
  1. 8 0
      apps/api/admin/exam/views.py
  2. 3 0
      apps/examination/exam/serializers.py

+ 8 - 0
apps/api/admin/exam/views.py

@@ -1,12 +1,14 @@
 # coding=utf-8
 
 import json
+from django.utils import timezone
 from django.db import transaction
 from rest_framework.viewsets import ReadOnlyModelViewSet
 from rest_framework.decorators import action
 from utils.permission import IsAdministrator
 from utils import response_error, response_ok
 from utils.custom_modelviewset import CustomModelViewSet
+from utils.exceptions import CustomError
 from apps.system.models import SysLog
 
 from apps.examination.exampaper.models import ExamPaper
@@ -50,6 +52,8 @@ class ExamViewSet(CustomModelViewSet):
 
         with transaction.atomic():
             exam = Exam.getById(pk)
+            if timezone.now() > exam.exam_time:
+                raise CustomError(u'考试已经开始,禁止修改!')
             exam.change_examinee(user_ids)
             exam.save()
             SysLog.objects.addnew(self.request.user, SysLog.UPDATE, u'添加考生,id=%d' % exam.id, request.POST.get('user_ids'))
@@ -61,6 +65,8 @@ class ExamViewSet(CustomModelViewSet):
 
         with transaction.atomic():
             exam = Exam.getById(pk)
+            if timezone.now() > exam.exam_time:
+                raise CustomError(u'考试已经开始,禁止修改!')
             exampaper = ExamPaper.getById(exampaper_id)
             exam.allocation_exampaper(Exam.FIXED, exampaper)
             exam.save()
@@ -73,6 +79,8 @@ class ExamViewSet(CustomModelViewSet):
 
         with transaction.atomic():
             exam = Exam.getById(pk)
+            if timezone.now() > exam.exam_time:
+                raise CustomError(u'考试已经开始,禁止修改!')
 
             data['name'] = exam.name
             data['type'] = ExamPaper.RANDOM

+ 3 - 0
apps/examination/exam/serializers.py

@@ -1,5 +1,6 @@
 # coding=utf-8
 import datetime
+from django.utils import timezone
 from rest_framework import serializers
 from .models import Exam, ExamLog, ExamAnswerLog, ExamAnswerOptionLog, ExamAnswerFillLog
 from apps.examination.examquestion.models import ExamQuestion
@@ -39,6 +40,8 @@ class ExamSerializer(serializers.ModelSerializer):
     def update(self, instance, validated_data):
         if instance.delete:
             raise CustomError(u'考试[%s]已经被删除,禁止操作' % instance.name)
+        if timezone.now() > instance.exam_time:
+            raise CustomError(u'考试已经开始,禁止修改!')
         exam_end_time = validated_data['exam_time'] +  datetime.timedelta(minutes=validated_data['duration'])
         validated_data['exam_end_time'] = exam_end_time
         instance = super(ExamSerializer, self).update(instance, validated_data)