|
|
|
import logging
|
|
|
|
|
|
|
|
from django.db.models import Count
|
|
|
|
|
|
|
|
# Create your views here.
|
|
|
|
from rest_framework import viewsets
|
|
|
|
from rest_framework.response import Response
|
|
|
|
from app.models import XZNSH
|
|
|
|
from app.serializers import SerialMyModel, SerialFilter
|
|
|
|
from app.pagination import MyPageNumberPagination
|
|
|
|
from user.models import UserProfile
|
|
|
|
from django.contrib.auth import authenticate, login, logout
|
|
|
|
from .utils import generate_token, decode_token_exp_time
|
|
|
|
|
|
|
|
logger = logging.getLogger('mylogger')
|
|
|
|
|
|
|
|
|
|
|
|
class XZNSHModelViewSet(viewsets.ModelViewSet):
|
|
|
|
# 查询类
|
|
|
|
queryset = XZNSH.objects.all().order_by("-uid") # 按照uid倒序
|
|
|
|
# 序列化类
|
|
|
|
serializer_class = SerialMyModel
|
|
|
|
# 分页类
|
|
|
|
pagination_class = MyPageNumberPagination
|
|
|
|
# 条件筛选
|
|
|
|
filterset_class = SerialFilter
|
|
|
|
|
|
|
|
def get_events(self, request, *args, **kwargs):
|
|
|
|
res = self.queryset.values("event_type").filter(event_type__isnull=False).annotate(count=Count("event_type")).order_by('-count')
|
|
|
|
response = self.filter_filed("event_type", res)
|
|
|
|
return Response(response)
|
|
|
|
|
|
|
|
def get_scenes(self, request, *args, **kwargs):
|
|
|
|
res = self.queryset.values("scene").filter(scene__isnull=False).annotate(count=Count("scene")).order_by('-count')
|
|
|
|
response = self.filter_filed("scene", res)
|
|
|
|
return Response(response)
|
|
|
|
|
|
|
|
def get_violation_reason(self, request, *args, **kwargs):
|
|
|
|
res = self.queryset.values("violation_reason").filter(violation_reason__isnull=False).annotate(count=Count("violation_reason")).order_by('-count')
|
|
|
|
response = self.filter_filed("violation_reason", res)
|
|
|
|
return Response(response)
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def filter_filed(filed_name, query_set):
|
|
|
|
result = list(query_set)
|
|
|
|
data = dict()
|
|
|
|
for index, item in enumerate(result, 1):
|
|
|
|
data[index] = item.get(filed_name)
|
|
|
|
response = {
|
|
|
|
'success': True,
|
|
|
|
'msg': '查询成功',
|
|
|
|
'data': data
|
|
|
|
}
|
|
|
|
return response
|
|
|
|
|