diff --git a/server/apps/exam/filters.py b/server/apps/exam/filters.py index a6143f2..05e97ed 100644 --- a/server/apps/exam/filters.py +++ b/server/apps/exam/filters.py @@ -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 \ No newline at end of file diff --git a/server/apps/exam/migrations/0002_auto_20240619_1412.py b/server/apps/exam/migrations/0002_auto_20240619_1412.py new file mode 100644 index 0000000..7df73e6 --- /dev/null +++ b/server/apps/exam/migrations/0002_auto_20240619_1412.py @@ -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='名称'), + ), + ] diff --git a/server/apps/exam/models.py b/server/apps/exam/models.py index 78ac629..6907091 100644 --- a/server/apps/exam/models.py +++ b/server/apps/exam/models.py @@ -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) diff --git a/server/apps/exam/views.py b/server/apps/exam/views.py index 6626b0f..f25638d 100644 --- a/server/apps/exam/views.py +++ b/server/apps/exam/views.py @@ -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])