diff --git a/test_server/examtest/migrations/0039_exam_only_vip.py b/test_server/examtest/migrations/0039_exam_only_vip.py new file mode 100644 index 0000000..8e8798e --- /dev/null +++ b/test_server/examtest/migrations/0039_exam_only_vip.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.4 on 2024-03-24 12:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('examtest', '0038_auto_20230330_1402'), + ] + + operations = [ + migrations.AddField( + model_name='exam', + name='only_vip', + field=models.BooleanField(default=False, verbose_name='仅允许培训班学员'), + ), + ] diff --git a/test_server/examtest/models.py b/test_server/examtest/models.py index fd579b0..5507cc5 100644 --- a/test_server/examtest/models.py +++ b/test_server/examtest/models.py @@ -26,6 +26,7 @@ class Exam(CommonModel): paper = models.ForeignKey(Paper, verbose_name='选定的试卷', on_delete=models.CASCADE, null=True, blank=True) qdimgs = JSONField('签到图片', default=list) xcimgs = JSONField('现场图片', default=list) + only_vip = models.BooleanField('仅允许培训班学员', default=False) def __str__(self): return self.name diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 6198798..c51055e 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -101,15 +101,18 @@ class ExamViewSet(ModelViewSet): """ 参加考试 """ + consumer = request.user if request.data.get('deptname', None): - request.user.deptname = request.data['deptname'] - request.user.save() + consumer.deptname = request.data['deptname'] + consumer.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) - tests = ExamTest.objects.filter(exam=exam, consumer=request.user) + if exam.only_vip and consumer.role.name != '培训班学员': + return Response({'error':'您无法参加本场考试'}) + tests = ExamTest.objects.filter(exam=exam, consumer=consumer) if tests.count() < exam.chance: # 还有考试机会就可以接着考 return Response({'exam':exam.pk}) return Response({'error':'考试机会不足'})