from django.shortcuts import render from rest_framework.viewsets import ModelViewSet, GenericViewSet from rest_framework.mixins import CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin from apps.mtm.models import Material, Process, Step from apps.mtm.serializers import MaterialSerializer, ProcessSerializer, StepSerializer from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from rest_framework.decorators import action from rest_framework.response import Response # Create your views here. class MaterialViewSet(CreateUpdateModelAMixin, ModelViewSet): """ 物料表-增删改查 """ perms_map = {'get': '*', 'post': 'material_create', 'put': 'material_update', 'delete': 'material_delete'} queryset = Material.objects.all() serializer_class = MaterialSerializer search_fields = ['name', 'number'] filterset_fields = ['type'] ordering_fields = ['number', 'sort_str'] ordering = ['number'] class ProcessViewSet(CreateUpdateModelAMixin, ModelViewSet): """ 工序表-增删改查 """ perms_map = {'get': '*', 'post': 'process_create', 'put': 'process_update', 'delete': 'process_delete'} queryset = Process.objects.select_related('instruction').all() serializer_class = ProcessSerializer search_fields = ['name', 'number'] filterset_fields = ['number'] ordering_fields = ['number'] ordering = ['number'] @action(methods=['get'], detail=True, perms_map={'get':'process_update'}, pagination_class=None, serializer_class=StepSerializer) def steps(self, request, pk=None): """ 工序下的子工序 """ process = self.get_object() serializer = self.serializer_class(instance=Step.objects.filter(process=process, is_deleted=True), many=True) return Response(serializer.data) class StepViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet): perms_map = {'*':'process_update'} queryset = Step.objects.all() serializer_class = StepSerializer search_fields = ['name', 'number'] filterset_fields = ['process'] ordering = ['sort']