From 5f4884e83d4d1a2ec18991a7b1e99ed18e93aeea Mon Sep 17 00:00:00 2001 From: zty Date: Wed, 12 Jun 2024 10:46:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20edu/model=20=E3=80=81serializers?= =?UTF-8?q?=E3=80=81view=20=E5=88=A0=E5=87=8F=E5=8F=82=E4=B8=8E=E9=83=A8?= =?UTF-8?q?=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/edu/models.py | 1 - apps/edu/serializers.py | 2 +- apps/edu/views.py | 24 +++++++++++++++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/apps/edu/models.py b/apps/edu/models.py index 9f9bec24..cee77945 100644 --- a/apps/edu/models.py +++ b/apps/edu/models.py @@ -19,7 +19,6 @@ class Train(CommonADModel): duration = models.PositiveIntegerField(verbose_name='时长', default=0, help_text='单位:s', editable=False) description = models.TextField(verbose_name='内容描述', default='', blank=True) is_public = models.BooleanField('是否公开', default=False) - attend_departs = models.ManyToManyField(Dept, verbose_name='参与部门', blank=True) files = models.ManyToManyField(File, verbose_name='附件', blank=True) class Meta: diff --git a/apps/edu/serializers.py b/apps/edu/serializers.py index 3bce6b4a..3fbcf15f 100644 --- a/apps/edu/serializers.py +++ b/apps/edu/serializers.py @@ -185,7 +185,7 @@ class ExamRecordSubmitSerializer(serializers.ModelSerializer): model = ExamRecord fields = ['detail'] -class ExamTrainingSerializer(CustomModelSerializer): +class TrainingSerializer(CustomModelSerializer): class Meta: model = Train diff --git a/apps/edu/views.py b/apps/edu/views.py index 070dab31..2f4c1101 100644 --- a/apps/edu/views.py +++ b/apps/edu/views.py @@ -5,10 +5,10 @@ from rest_framework.exceptions import ParseError from rest_framework.decorators import action from rest_framework.serializers import Serializer from django.db import transaction -from .models import Questioncat, Question, Paper, PaperQuestion, Exam, ExamRecord, AnswerDetail +from .models import Questioncat, Question, Paper, PaperQuestion, Exam, ExamRecord, AnswerDetail, Train from .serializers import (QuestioncatSerializer, QuestionSerializer, ExamSerializer, ExamRecordInitSerizlier, ExamRecordSerializer, ExamRecordDetailSerializer, ExamRecordSubmitSerializer, - PaperSerializer, PaperListSerializer, PaperPatchSerializer, ExamDetailSerializer) + PaperSerializer, PaperListSerializer, PaperPatchSerializer, ExamDetailSerializer, TrainingSerializer) from django.utils import timezone from rest_framework.response import Response from rest_framework.permissions import IsAuthenticated @@ -194,4 +194,22 @@ class ExamRecordViewSet(ListModelMixin, DestroyModelMixin, RetrieveModelMixin, C er.end_time = now er.is_submited = True er.save() - return Response(ExamRecordSerializer(er).data) \ No newline at end of file + return Response(ExamRecordSerializer(er).data) + + +class TrainRecordViewSet(ListModelMixin, DestroyModelMixin, RetrieveModelMixin, CustomGenericViewSet): + ''' + 培训记录 + ''' + perms_map = {"get": "*", "delete": "train.delete"} + queryset = Train.objects.all() + serializer_class = TrainingSerializer + search_fields = ('create_by__name', 'create_by__username', 'name') + + def get_queryset(self): + qs = super().get_queryset() + if has_perm(self.request.user, ["train.view"]): + return qs + return qs.filter(create_by=self.request.user) + + From ab358abf804735072835883269cf04004e1e74eb Mon Sep 17 00:00:00 2001 From: zty Date: Wed, 12 Jun 2024 18:07:17 +0800 Subject: [PATCH 2/2] fix: edu.url edu.view --- apps/edu/urls.py | 3 ++- apps/edu/views.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/edu/urls.py b/apps/edu/urls.py index ca6630ba..0445c265 100644 --- a/apps/edu/urls.py +++ b/apps/edu/urls.py @@ -1,6 +1,6 @@ from django.urls import path, include from rest_framework.routers import DefaultRouter -from apps.edu.views import QuestioncatViewSet, QuestionViewSet, PaperViewSet, ExamViewSet, ExamRecordViewSet +from apps.edu.views import QuestioncatViewSet, QuestionViewSet, PaperViewSet, ExamViewSet, ExamRecordViewSet, TrainRecordViewSet API_BASE_URL = 'api/edu/' HTML_BASE_URL = 'edu/' @@ -11,6 +11,7 @@ router.register('question', QuestionViewSet, basename='question') router.register('paper', PaperViewSet, basename='paper') router.register('exam', ExamViewSet, basename='exam') router.register('examrecord', ExamRecordViewSet, basename='examrecord') +router.register('training', TrainRecordViewSet, basename='examrecord') urlpatterns = [ path(API_BASE_URL, include(router.urls)), ] diff --git a/apps/edu/views.py b/apps/edu/views.py index 2f4c1101..990f3c99 100644 --- a/apps/edu/views.py +++ b/apps/edu/views.py @@ -197,11 +197,11 @@ class ExamRecordViewSet(ListModelMixin, DestroyModelMixin, RetrieveModelMixin, C return Response(ExamRecordSerializer(er).data) -class TrainRecordViewSet(ListModelMixin, DestroyModelMixin, RetrieveModelMixin, CustomGenericViewSet): +class TrainRecordViewSet(CustomModelViewSet): ''' 培训记录 ''' - perms_map = {"get": "*", "delete": "train.delete"} + perms_map = {"get": "*", "delete": "train.delete","post": "train.create","put": "train.update"} queryset = Train.objects.all() serializer_class = TrainingSerializer search_fields = ('create_by__name', 'create_by__username', 'name')