factory/apps/enp/views.py

65 lines
2.3 KiB
Python

from django.shortcuts import render
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet, ListModelMixin
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin
from .serializers import DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer, VehicleAccessSerializer
from .models import Drain, DrainEquip, VehicleAccess
from rest_framework.decorators import action
from apps.utils.sql import query_all_dict
from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
# Create your views here.
class DrainViewSet(CustomModelViewSet):
"""
list: 排口/污染源
排口/污染源
"""
queryset = Drain.objects.all()
serializer_class = DrainSerializer
filterset_fields = ['type', 'cate', 'mgroup']
class DrainEquipViewSet(ListModelMixin, BulkCreateModelMixin, BulkDestroyModelMixin, CustomGenericViewSet):
"""
list: 排口/设备关系
排口/设备关系
"""
perms_map = {'get': '*', 'post:': 'drain.update', 'delete': 'drain.update'}
queryset = DrainEquip.objects.all()
serializer_class = DrainEquipSerializer
select_related_fields = ['equipment', 'drain']
filterset_fields = ['drain', 'equipment',
'drain__mgroup', 'equipment__mgroup', 'drain__type']
def get_serializer_class(self):
has_envdata = self.request.query_params.get('has_envdata', 'no')
if has_envdata == 'yes':
return DrainEquipEnvSerializer
return super().get_serializer_class()
@swagger_auto_schema(manual_parameters=[
openapi.Parameter(name="has_envdata", in_=openapi.IN_QUERY, description="Include environmental data in the response",
type=openapi.TYPE_STRING, enum=["yes", "no"], required=False),
])
def list(self, request, *args, **kwargs):
return super().list(request, *args, **kwargs)
class VehicleAccessViewSet(ListModelMixin, CustomGenericViewSet):
"""
list: 车辆出入记录
车辆出入记录
"""
perms_map = {'get': '*'}
queryset = VehicleAccess.objects.all()
serializer_class = VehicleAccessSerializer
filterset_fields = {
"vehicle_number": ['icontains'],
"emission_standard": ['exact', 'in'],
"type": ['exact', 'in'],
}