105 lines
3.4 KiB
Python
105 lines
3.4 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, EnvDataSerializer, EnvDataExportSerializer, CarWashSerializer
|
|
from .models import Drain, DrainEquip, VehicleAccess, EnvData, CarWash
|
|
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
|
|
from rest_framework.response import Response
|
|
# 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', 'equipment__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'],
|
|
}
|
|
|
|
|
|
class EnvDataViewSet(ListModelMixin, CustomGenericViewSet):
|
|
"""
|
|
list: 环保时序数据
|
|
|
|
环保时序数据
|
|
"""
|
|
perms_map = {'get': '*'}
|
|
queryset = EnvData.objects.all()
|
|
serializer_class = EnvDataSerializer
|
|
filterset_fields = {
|
|
"time": ['exact', 'gte', 'lte', 'year', 'month', 'day'],
|
|
"equipment": ['exact'],
|
|
}
|
|
|
|
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
|
serializer_class=EnvDataExportSerializer)
|
|
def export_excel(self, request, *args, **kwargs):
|
|
"""导出Excel
|
|
|
|
导出Excel
|
|
"""
|
|
return Response()
|
|
|
|
|
|
class CarWashViewSet(ListModelMixin, CustomGenericViewSet):
|
|
"""
|
|
list: 洗车记录
|
|
|
|
洗车记录
|
|
"""
|
|
perms_map = {'get': '*'}
|
|
queryset = CarWash.objects.all()
|
|
serializer_class = CarWashSerializer
|
|
filterset_fields = {
|
|
"station": ['exact'],
|
|
"start_time": ['exact', 'gte', 'lte', 'year', 'month', 'day'],
|
|
}
|