123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- from django.db.models import Q
- from django.utils.decorators import method_decorator
- from django.views import View
- from django.views.decorators.csrf import csrf_exempt
- from Model.models import LogModel
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- class LogView(View):
- @method_decorator(csrf_exempt)
- def dispatch(self, request, *args, **kwargs):
- return super(LogView, self).dispatch(request, *args, **kwargs)
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.GET
- operation = kwargs.get('operation')
- return self.validate(request_dict, operation)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.POST
- operation = kwargs.get('operation')
- return self.validate(request_dict, operation)
- def validate(self, request_dict, operation):
- token = TokenObject(request_dict.get('token', None))
- response = ResponseObject()
- if token.code != 0:
- return response.json(token.code)
- if operation == 'query':
- return self.do_query(request_dict, token, response)
- elif operation == 'queryAll':
- return self.do_query_all(request_dict, token, response)
- elif operation == 'delete':
- return self.do_delete(request_dict, response)
- elif operation == 'adminQuery':
- return self.do_admin_query(request_dict, token, response)
- else:
- return response.json(404)
- def do_query(self, request_dict, token: TokenObject, response):
- page = request_dict.get('page', None)
- line = request_dict.get('line', None)
- if page and line:
- # 过滤登录登出,获取/重置序列号日志
- log_qs = LogModel.objects.filter(
- Q(user__id=token.userID) & ~Q(url='user/login') & ~Q(url='user/logout') & ~Q(
- url='serialNumber/getSerial') & ~Q(url='uploadSerialNumber')).\
- values('id', 'operation', 'time', 'ip', 'user__username')
- if log_qs.exists():
- page = int(page)
- line = int(line)
- start = (page - 1) * line
- count = log_qs.count()
- data = log_qs[start:(start + line)]
- return response.json(0, {'count': count, 'data': list(data)})
- else:
- return response.json(0, {'count': 0, 'data': []})
- else:
- return response.json(444)
- def do_query_all(self, request_dict, token: TokenObject, response: ResponseObject):
- log_qs = LogModel.objects.filter(user__id=token.userID).values('id', 'operation', 'time', 'ip')
- if log_qs.exists():
- count = log_qs.count()
- return response.json(0, {'count': count, 'data': list(log_qs)})
- else:
- return response.json(0, {'count': 0, 'data': []})
- def do_delete(self, request_dict, response):
- id = request_dict.get('id', None)
- if id:
- LogModel.objects.filter(id=id).delete()
- return response.json(0)
- else:
- return response.json(444)
- def do_admin_query(self, request_dict, token: TokenObject, response):
- page = request_dict.get('page', None)
- line = request_dict.get('limit', None)
- if page and line:
- log_qs = LogModel.objects.filter().values('id', 'operation', 'time', 'ip', 'user__username')
- if log_qs.exists():
- page = int(page)
- line = int(line)
- start = (page - 1) * line
- count = log_qs.count()
- data = log_qs[start:(start + line)]
- return response.json(0, {'count': count, 'data': list(data)})
- else:
- return response.json(0, {'count': 0, 'data': []})
- else:
- return response.json(444)
|