diff --git a/server/apps/ability/models.py b/server/apps/ability/models.py index 432b6ad..aa84f45 100644 --- a/server/apps/ability/models.py +++ b/server/apps/ability/models.py @@ -198,6 +198,8 @@ class QAction(CommonBModel): ('quali:create', '新增资质'), ('quali:update', '更新资质'), ('ablity:create', '新增能力'), + ('ablity:nochange', '能力无变化'), + ('quali:nochange', '资质无变化') ) action = models.CharField('操作类型', max_length=20, choices=QACTION_CHOICE) quali = models.ForeignKey(Quali, null=True, blank=True, verbose_name='操作资质', on_delete=models.CASCADE) diff --git a/server/apps/ability/serializers_qtask.py b/server/apps/ability/serializers_qtask.py index 9561466..8f77713 100644 --- a/server/apps/ability/serializers_qtask.py +++ b/server/apps/ability/serializers_qtask.py @@ -146,6 +146,11 @@ class QActionQualiUpdateSerializer(serializers.ModelSerializer): validated_data['value2'] = self.data['value2'] return super().create(validated_data) +class QActionNoChangeSerializer(serializers.ModelSerializer): + class Meta: + model = QAction + fields = ['qtask'] + class QActionACreateSerializer(serializers.ModelSerializer): class Meta: model = QAction diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 605218b..22cbf2e 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -2,7 +2,7 @@ from rest_framework.viewsets import GenericViewSet from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin, RetrieveModelMixin from rest_framework.decorators import action from apps.ability.models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib -from apps.ability.serializers_qtask import QActionACreateSerializer, QActionDetailSerializer, QActionListSerializer, QActionQualiCreateSerializer, QActionQualiUpdateSerializer, QActionServiceSerializer, QOrgListSerializer, QTaskCreateUpdateSerializer, QTaskListSerializer, QualiCreateSerializer, QualiLibListSerializer, QualiListSerializer, QualiSerializer, QualiUpdateSerializer +from apps.ability.serializers_qtask import QActionACreateSerializer, QActionDetailSerializer, QActionListSerializer, QActionNoChangeSerializer, QActionQualiCreateSerializer, QActionQualiUpdateSerializer, QActionServiceSerializer, QOrgListSerializer, QTaskCreateUpdateSerializer, QTaskListSerializer, QualiCreateSerializer, QualiLibListSerializer, QualiListSerializer, QualiSerializer, QualiUpdateSerializer from django.db import transaction from rest_framework.response import Response from rest_framework import status @@ -99,7 +99,7 @@ def cal_count(qtask, org): qorg.save() class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet): - perms_map = {'get': 'qtask_view', 'delete': 'qaction_delete'} + perms_map = {'get': '*', 'delete': 'qaction_delete'} queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by') filterset_fields = ['qtask', 'belong_dept', 'atype', 'afield'] serializer_class = QActionListSerializer @@ -212,6 +212,37 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel cal_count(vdata['qtask'], user.dept) return Response() + @action(methods=['post'], detail=False, + perms_map = {'post':'ability_nochange'}, serializer_class=QActionNoChangeSerializer) + @transaction.atomic + def ability_nochange(self, request, *args, **kwargs): + """ + 能力无变化 + """ + user = request.user + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + serializer.save(create_by=user, belong_dept=user.dept, action='ability:nochange') + vdata = serializer.validated_data + cal_count(vdata['qtask'], user.dept) + return Response() + + @action(methods=['post'], detail=False, + perms_map = {'post':'quali_nochange'}, serializer_class=QActionNoChangeSerializer) + @transaction.atomic + def quali_nochange(self, request, *args, **kwargs): + """ + 资质无变化 + """ + user = request.user + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + serializer.save(create_by=user, belong_dept=user.dept, action='quali:nochange') + vdata = serializer.validated_data + cal_count(vdata['qtask'], user.dept) + return Response() + + @action(methods=['put'], detail=True, perms_map = {'put':'qaction_confirm'}, serializer_class=serializers.Serializer) @transaction.atomic diff --git a/server/apps/vod/views.py b/server/apps/vod/views.py index 89d1687..f210001 100644 --- a/server/apps/vod/views.py +++ b/server/apps/vod/views.py @@ -48,8 +48,8 @@ class VideoViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet): search_fields = ['name', 'category__name', 'description'] # filterset_fields = ['category'] serializer_class = VideoSerializer - ordering_fields = ['category__sort', 'sort_str', 'views', 'viewsp'] - ordering = ['category__sort', 'sort_str'] + ordering_fields = ['category__code', 'sort_str', 'views', 'viewsp'] + ordering = ['category__code', 'sort_str'] def get_serializer_class(self): if self.action in ['list', 'retrieve']: