diff --git a/apps/pm/serializers.py b/apps/pm/serializers.py index 314463eb..5bea0059 100644 --- a/apps/pm/serializers.py +++ b/apps/pm/serializers.py @@ -55,6 +55,13 @@ class MlogSimpleSerializer(CustomModelSerializer): fields = ['id', 'shift_name', 'count_use', 'count_ok', 'count_real', 'submit_time'] +class MtaskbAddSerializer(CustomModelSerializer): + handle_user_name = serializers.StringRelatedField( + source='handle_user.name', read_only=True) + class Meta: + model = Mtaskb + fields = ['id', 'handle_user', 'handle_user_name', 'count'] + class MtaskbSerializer(CustomModelSerializer): handle_user_name = serializers.StringRelatedField( source='handle_user.name', read_only=True) diff --git a/apps/pm/views.py b/apps/pm/views.py index bc56e17c..f49d41a3 100644 --- a/apps/pm/views.py +++ b/apps/pm/views.py @@ -11,7 +11,8 @@ from .filters import MtaskFilter, UtaskFilter from .models import Mtask, Utask, Mtaskb from .serializers import (MtaskSerializer, SchedueSerializer, UtaskSerializer, MtaskDaySerializer, MtaskAddInfoSerializer, - SchedueMtasksSerializer, MtaskbSerializer, MtaskbUpdateSerializer) + SchedueMtasksSerializer, MtaskbSerializer, + MtaskbUpdateSerializer, MtaskbAddSerializer) from .services import PmService from django.utils import timezone @@ -206,6 +207,21 @@ class MtaskViewSet(CustomModelViewSet): sr.save() return Response() + @action(methods=['post'], detail=True, perms_map={'post': 'mlogb.create'}, serializer_class=MtaskbAddSerializer) + @transaction.atomic + def add_mtaskb(self, request, *args, **kwargs): + mtask = self.get_object() + sr = MtaskAddInfoSerializer(data=request.data, many=True) + sr.is_valid(raise_exception=True) + vdata = sr.validated_data + total = 0 + for v in vdata: + total += v['count'] + if total != mtask.count: + raise ParseError('任务数量与分配数量不匹配') + for v in vdata: + Mtaskb.objects.get_or_create(mtask=mtask, handle_user=vdata['handle_user'], count=vdata['count']) + return Response() class MtaskbViewSet(CustomModelViewSet): queryset = Mtaskb.objects.all()