108 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
| from django.shortcuts import render
 | |
| from rest_framework.response import Response
 | |
| from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplWorker
 | |
| from apps.opm.serializers import GasCheckCreateUpdateSerializer, GasCheckSerializer, OperationCreateUpdateSerializer, OperationSerializer, OplCateCreateUpdateSerializer, OplCateSerializer, OplCreateUpdateSerializer, OplSerializer, OplWorkerCreateSerializer, OplWorkerUpdateSerializer
 | |
| from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
 | |
| from rest_framework.exceptions import ParseError
 | |
| from rest_framework.mixins import CreateModelMixin, ListModelMixin, DestroyModelMixin
 | |
| from rest_framework.decorators import action
 | |
| from rest_framework import serializers
 | |
| from django.db import transaction
 | |
| 
 | |
| # Create your views here.
 | |
| class OplCateViewSet(CustomModelViewSet):
 | |
|     queryset = OplCate.objects.all()
 | |
|     create_serializer_class = OplCateCreateUpdateSerializer
 | |
|     update_serializer_class = OplCateCreateUpdateSerializer
 | |
|     serializer_class = OplCateSerializer
 | |
| 
 | |
| 
 | |
| class OperationViewSet(CustomModelViewSet):
 | |
|     queryset = Operation.objects.all()
 | |
|     create_serializer_class = OperationCreateUpdateSerializer
 | |
|     update_serializer_class = OperationCreateUpdateSerializer
 | |
|     serializer_class = OperationSerializer
 | |
| 
 | |
|     def update(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.state != Operation.OP_CREATE:
 | |
|             raise ParseError('非创建状态不可修改')
 | |
|         return super().update(request, *args, **kwargs)
 | |
| 
 | |
|     def destroy(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.state != Operation.OP_CREATE:
 | |
|             raise ParseError('非创建状态不可删除')
 | |
|         obj.delete(soft=False)
 | |
|         return Response(status=204)
 | |
| 
 | |
| 
 | |
| class OplViewSet(CustomModelViewSet):
 | |
|     queryset = Opl.objects.all()
 | |
|     create_serializer_class = OplCreateUpdateSerializer
 | |
|     update_serializer_class = OplCreateUpdateSerializer
 | |
|     serializer_class = OplSerializer
 | |
| 
 | |
|     def destroy(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.ticket:
 | |
|             raise ParseError('许可证已处理不可删除')
 | |
|         return super().destroy(request, *args, **kwargs)
 | |
| 
 | |
|     def create(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.operation.state == Operation.OP_CLOSE:
 | |
|             raise ParseError('作业已关闭不可创建许可')
 | |
|         return super().create(request, *args, **kwargs)
 | |
| 
 | |
|     def update(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.ticket:
 | |
|             raise ParseError('许可证已处理不可编辑')
 | |
|         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 = OplSerializer
 | |
| 
 | |
|     def create(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.opl.ticket:
 | |
|             raise ParseError('许可证已处理不可新增')
 | |
|         return super().create(request, *args, **kwargs)
 | |
| 
 | |
|     def destroy(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.opl.ticket:
 | |
|             raise ParseError('许可证已处理不可删除')
 | |
|         return super().destroy(request, *args, **kwargs)
 | |
| 
 | |
|     def update(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.opl.ticket:
 | |
|             raise ParseError('许可证已处理不可编辑')
 | |
|         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
 | |
| 
 | |
|     def create(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.opl.ticket:
 | |
|             raise ParseError('许可证已处理不可新增')
 | |
|         return super().create(request, *args, **kwargs)
 | |
| 
 | |
|     def destroy(self, request, *args, **kwargs):
 | |
|         obj = self.get_object()
 | |
|         if obj.opl.ticket:
 | |
|             raise ParseError('许可证已处理不可删除')
 | |
|         return super().destroy(request, *args, **kwargs)
 |