factory/apps/opm/views.py

112 lines
4.8 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from rest_framework.response import Response
from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplWorker
from apps.opm.serializers import (GasCheckCreateUpdateSerializer, GasCheckSerializer,
OperationCreateUpdateSerializer, OperationDetailSerializer,
OplCateCreateUpdateSerializer, OplCateDetailSerializer, OplCateSerializer,
OplCreateUpdateSerializer, OplDetailSerializer, OplListSerializer,
OplWorkerCreateSerializer, OplWorkerSerializer, OplWorkerUpdateSerializer)
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from rest_framework.exceptions import ParseError
from rest_framework.mixins import CreateModelMixin, ListModelMixin, DestroyModelMixin
from apps.wf.models import Ticket
# Create your views here.
class OplCateViewSet(CustomModelViewSet):
queryset = OplCate.objects.all()
create_serializer_class = OplCateCreateUpdateSerializer
update_serializer_class = OplCateCreateUpdateSerializer
retrieve_serializer_class = OplCateDetailSerializer
serializer_class = OplCateSerializer
prefetch_related_fields = ['measure_options', 'risk_options', 'close_options']
class OperationViewSet(CustomModelViewSet):
perms_map = {'get': 'operation.view', 'post': 'operation.create', 'put': 'operation.update', 'delete': 'operation.delete'}
queryset = Operation.objects.all()
create_serializer_class = OperationCreateUpdateSerializer
update_serializer_class = OperationCreateUpdateSerializer
serializer_class = OperationDetailSerializer
retrieve_serializer_class = OperationDetailSerializer
select_related_fields = ['area', 'dept_bus', 'dept_ter', 'coordinator']
prefetch_related_fields = ['cates']
filterset_fields = ['state', 'cates', 'area', 'create_by']
def update(self, request, *args, **kwargs):
obj = self.get_object()
if obj.state != Operation.OP_CREATE:
raise ParseError('é<EFBFBD>žåˆå»ºçжæ€<EFBFBD>ä¸<EFBFBD>å<EFBFBD>¯ä¿®æ”¹')
return super().update(request, *args, **kwargs)
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
if obj.state != Operation.OP_CREATE:
raise ParseError('é<EFBFBD>žåˆå»ºçжæ€<EFBFBD>ä¸<EFBFBD>å<EFBFBD>¯åˆ é™¤')
obj.delete()
return Response(status=204)
class OplViewSet(CustomModelViewSet):
queryset = Opl.objects.all()
create_serializer_class = OplCreateUpdateSerializer
update_serializer_class = OplCreateUpdateSerializer
serializer_class = OplListSerializer
retrieve_serializer_class = OplDetailSerializer
select_related_fields = ['cate', 'operation', 'dept_do', 'charger', 'monitor', 'ticket']
filterset_fields = ['operation', 'cate']
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
if obj.ticket and obj.ticket.act_state != Ticket.TICKET_ACT_STATE_DRAFT:
raise ParseError('许å<EFBFBD>¯è¯<EFBFBD>已处ç<EFBFBD>†ä¸<EFBFBD>å<EFBFBD>¯åˆ é™¤')
return super().destroy(request, *args, **kwargs)
def update(self, request, *args, **kwargs):
obj = self.get_object()
if obj.ticket and obj.ticket.act_state != Ticket.TICKET_ACT_STATE_DRAFT:
raise ParseError('许å<EFBFBD>¯è¯<EFBFBD>已处ç<EFBFBD>†ä¸<EFBFBD>å<EFBFBD>¯ç¼è¾')
return super().update(request, *args, **kwargs)
class OplWorkerViewSet(CustomModelViewSet):
perms_map = {'get': '*', 'post': 'opl.update', 'put': 'opl.update', 'delete': 'opl.update'}
queryset = OplWorker.objects.all()
create_serializer_class = OplWorkerCreateSerializer
update_serializer_class = OplWorkerUpdateSerializer
serializer_class = OplWorkerSerializer
filterset_fields = ['opl']
# def get_queryset(self):
# if self.request.query_params.get('opl', None):
# raise ParseError('请指定查询许å<C2B8>¯è¯<C3A8>')
# return super().get_queryset()
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
if obj.opl.ticket:
raise ParseError('许å<EFBFBD>¯è¯<EFBFBD>已处ç<EFBFBD>†ä¸<EFBFBD>å<EFBFBD>¯åˆ é™¤')
return super().destroy(request, *args, **kwargs)
def update(self, request, *args, **kwargs):
obj = self.get_object()
if obj.opl.ticket:
raise ParseError('许å<EFBFBD>¯è¯<EFBFBD>已处ç<EFBFBD>†ä¸<EFBFBD>å<EFBFBD>¯ç¼è¾')
return super().update(request, *args, **kwargs)
class GasCheckViewSet(CreateModelMixin, ListModelMixin, DestroyModelMixin, CustomGenericViewSet):
perms_map = {'get': '*', 'post': 'opl.update', 'delete': 'opl.update'}
queryset = GasCheck.objects.all()
create_serializer_class = GasCheckCreateUpdateSerializer
serializer_class = GasCheckSerializer
filterset_fields = ['opl']
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
if obj.opl.ticket:
raise ParseError('许å<EFBFBD>¯è¯<EFBFBD>已处ç<EFBFBD>†ä¸<EFBFBD>å<EFBFBD>¯åˆ é™¤')
return super().destroy(request, *args, **kwargs)