diff --git a/test_server/crm/models.py b/test_server/crm/models.py index fd7de7a..e372b19 100644 --- a/test_server/crm/models.py +++ b/test_server/crm/models.py @@ -74,6 +74,7 @@ class Consumer(CommonModel): ID_number1 = models.CharField('身份证号', max_length=100, null=True, blank=True) create_admin = models.ForeignKey(UserProfile, on_delete=models.SET_NULL, null=True, blank=True, related_name='consumer_create_admin') + deptname = models.CharField('所在部门', max_length=100, null=True, blank=True) exceed_date = models.DateField('账号过期', null=True, blank=True) diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 2a8d5d7..7b460f1 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -28,7 +28,7 @@ from .serializers import ( ExamTestListSerializer, MoniTestSerializer, PaperDetailSerializer, PaperQuestionsCreateSerializer, PaperSerializer, TestRuleSerializer, WorkScopeSerializer, ExamCreateUpdateSerializer, ExamListSerializer) - +from django.utils import timezone # Create your views here. class ExamViewSet(ModelViewSet): @@ -70,6 +70,36 @@ class ExamViewSet(ModelViewSet): return Response({'error':'存在考试记录,禁止删除'}) instance.delete() return Response(status=status.HTTP_204_NO_CONTENT) + + + @action(methods=['post'], detail = False,perms_map=[{'get':'exam_attend'}]) + def attend(self, request, *args, **kwargs): + """ + 参加考试 + """ + if request.user.role.name in ['游客', '注册用户']: + return Response({'error':'无权参加考试,请联系老师'}) + if request.data.get('deptname', None): + request.user.deptname = request.data['deptname'] + request.user.save() + if request.data.get('code', None): + code = request.data.get('code') + now = timezone.now() + try: + exam = Exam.objects.get(code=code, opentime__lt=now, closetime__gt=now) + return Response({'exam':exam.pk}) + except: + return Response({'error':'考试编号错误'}) + return Response({'error':'操作失败'}) + + @action(methods=['post'], detail = True,perms_map=[{'get':'exam_init'}]) + def init(self, request, *args, **kwargs): + """ + 生成考试卷 + """ + obj = self.get_object() + pass + class AnswerDetailView(APIView):