123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- from django.views.generic.base import View
- from django.utils.decorators import method_decorator
- from django.views.decorators.csrf import csrf_exempt
- from Service.TokenManager import JSONTokenManager
- from Service.ModelService import ModelService
- from Service.CommonService import CommonService
- from Model.models import Access_Log
- import datetime
- from var_dump import var_dump
- from Service.ResponseService import *
- '''
- http://192.168.136.40:8077/accesslog?operation=queryByAdmin&token=test&page=1&line=5&order=-id
- http://192.168.136.40:8077/accesslog?operation=truncateByAdmin&token=test
- http://192.168.136.40:8077/accesslog?operation=searchByAdmin&token=test&page=1&line=10&content={"status":20}&order=-id
- '''
- class AccessLog(View):
- @method_decorator(csrf_exempt)
- def dispatch(self, *args, **kwargs):
- return super(AccessLog, self).dispatch(*args, **kwargs)
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- return self.validation(request_dict=request.GET)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- return self.validation(request_dict=request.POST)
- def validation(self, request_dict, *args, **kwargs):
- token = request_dict.get('token', None)
- if token is not None:
- tokenManager = JSONTokenManager()
- error_code = tokenManager.verify_AToken(token)
- if error_code == 0:
- userID = tokenManager.accessDict.get('userID', None)
- operation = request_dict.get('operation', None)
- param_flag = CommonService.get_param_flag(data=[userID, operation])
- if param_flag is True:
- if operation == 'queryByAdmin':
- return self.query_by_admin(request_dict=request_dict, userID=userID)
- elif operation == 'searchByAdmin':
- return self.search_by_admin(request_dict=request_dict, userID=userID)
- elif operation == 'truncateByAdmin':
- return self.truncate_by_admin(userID=userID)
- return ResponseJSON(444)
- else:
- return HttpResponse(tokenManager.errorCodeInfo(error_code))
- else:
- return ResponseJSON(311)
- def query_by_admin(self, request_dict, userID):
- page = int(request_dict.get('page', None))
- line = int(request_dict.get('line', None))
- order = request_dict.get('order', '-id')
- if order == '':
- order = '-id'
- param_flag = CommonService.get_param_flag(data=[page, line])
- if param_flag is True:
- check_perm = ModelService.check_permission(userID=userID, permID=30)
- if check_perm is True:
- access_log_queryset = Access_Log.objects.all().order_by(order)
- if access_log_queryset.exists():
- count = access_log_queryset.count()
- res = access_log_queryset[(page - 1) * line:page * line]
- send_json = CommonService.query_set_to_dict(res)
- send_json['count'] = count
- return ResponseJSON(0,send_json)
- return ResponseJSON(0, {'datas': [], 'count': 0})
- else:
- return ResponseJSON(404)
- else:
- return ResponseJSON(444)
- def truncate_by_admin(self, userID):
- check_perm = ModelService.check_permission(userID=userID, permID=10)
- if check_perm is True:
- from django.db import connection
- cursor = connection.cursor()
- cursor.execute("TRUNCATE TABLE `access_log`")
- return ResponseJSON(0)
- def search_by_admin(self, request_dict, userID):
- page = int(request_dict.get('page', None))
- line = int(request_dict.get('line', None))
- order = request_dict.get('order', '-id')
- content = request_dict.get('content', None)
- starttime = request_dict.get('starttime', None)
- endtime = request_dict.get('endtime', None)
- param_flag = CommonService.get_param_flag(data=[page, line])
- if param_flag is True:
- check_perm = ModelService.check_permission(userID=userID, permID=20)
- if check_perm is True:
- try:
- content = json.loads(content)
- search_kwargs = CommonService.get_kwargs(data=content)
- except Exception as e:
- return ResponseJSON(444)
- queryset = Access_Log.objects.filter(**search_kwargs).order_by(order)
- if starttime is not None and starttime != '' and endtime is not None and endtime != '':
- startt = datetime.datetime.fromtimestamp(int(starttime))
- starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
- endt = datetime.datetime.fromtimestamp(int(endtime))
- endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
- var_dump(starttime,endtime)
- queryset = queryset.filter(time__range=(starttime, endtime))
- elif starttime is not None and starttime != '':
- startt = datetime.datetime.fromtimestamp(int(starttime))
- starttime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
- queryset = queryset.filter(time__gte=starttime)
- elif endtime is not None and endtime != '':
- endt = datetime.datetime.fromtimestamp(int(endtime))
- endtime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
- queryset = queryset.filter(time__lte=endtime)
- if queryset.exists():
- count = queryset.count()
- res = queryset[(page - 1) * line:page * line]
- send_json = CommonService.query_set_to_dict(res)
- send_json['count'] = count
- return ResponseJSON(0,send_json)
- return ResponseJSON(0,{'datas': [], 'count': 0})
- else:
- return ResponseJSON(404)
- else:
- return ResponseJSON(444)
|