fix: exam/viwe.py 修改考试的参与记录

This commit is contained in:
zty 2024-06-19 14:15:02 +08:00
parent e59038b66e
commit 305f5b065f
4 changed files with 28 additions and 5 deletions

View File

@ -40,6 +40,6 @@ class ExamFilter(filters.FilterSet):
def filter_is_my(self, queryset, name, value):
if value:
user = self.request.user
return queryset.filter(Q(participant_user=user)|Q(participant_dep=user.dept)|Q(is_open=True))
return queryset.filter(participant_dep=user.dept)
return queryset

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.12 on 2024-06-19 06:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('exam', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='exam',
name='name',
field=models.CharField(max_length=100, unique=True, verbose_name='名称'),
),
migrations.AlterField(
model_name='paper',
name='name',
field=models.CharField(max_length=200, unique=True, verbose_name='名称'),
),
]

View File

@ -51,7 +51,7 @@ class Question(CommonADModel):
class Paper(CommonAModel):
name = models.CharField(max_length=200, verbose_name='名称')
name = models.CharField(max_length=200, verbose_name='名称', unique=True)
questions = models.ManyToManyField(Question, through='PaperQuestion')
limit = models.IntegerField(default=0, verbose_name='限时(分钟)')
total_score = models.FloatField(default=0, verbose_name='满分')
@ -81,7 +81,7 @@ class Exam(CommonAModel):
组织的正式考试
"""
code = models.CharField('考试编号', max_length=100, null=True, blank=True, unique=True)
name = models.CharField('名称', max_length=100)
name = models.CharField('名称', max_length=100, unique=True)
place = models.CharField('考试地点', max_length=100, null=True, blank=True)
open_time = models.DateTimeField('开启时间', null=True, blank=True)
close_time = models.DateTimeField('关闭时间', null=True, blank=True)

View File

@ -489,14 +489,14 @@ class ExamViewSet(CreateUpdateCustomMixin, ModelViewSet):
user = self.request.user
if has_permission("exam", user):
return qs
return qs.filter(Q(participant_user=user)|Q(participant_dep=user.dept)|Q(is_open=True))
return qs.filter(participant_dep=user.dept)
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if ExamRecord.objects.filter(exam=instance).exists():
raise ParseError('存在考试记录,禁止删除')
instance.delete()
instance.delete(soft=False)
return Response(status=204)
@action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=Serializer, permission_classes = [IsAuthenticated])