LogManagementController.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import json
  4. import time
  5. import urllib
  6. import uuid
  7. import boto3
  8. import threading
  9. import logging
  10. from boto3.session import Session
  11. from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
  12. from django.views.generic.base import View
  13. from Controller.CheckUserData import date_handler
  14. from Model.models import Device_Info, Role, MenuModel, RequestRecordModel
  15. from Object.ResponseObject import ResponseObject
  16. from Object.TokenObject import TokenObject
  17. from Object.UidTokenObject import UidTokenObject
  18. from Service.CommonService import CommonService
  19. from django.db.models import Q, F
  20. from time import strftime
  21. class LogManagementView(View):
  22. def get(self, request, *args, **kwargs):
  23. request.encoding = 'utf-8'
  24. operation = kwargs.get('operation')
  25. return self.validation(request.GET, request, operation)
  26. def post(self, request, *args, **kwargs):
  27. request.encoding = 'utf-8'
  28. operation = kwargs.get('operation')
  29. return self.validation(request.POST, request, operation)
  30. def validation(self, request_dict, request, operation):
  31. language = request_dict.get('language', 'en')
  32. response = ResponseObject(language, 'pc')
  33. if operation == '??':
  34. return 0
  35. else:
  36. tko = TokenObject(
  37. request.META.get('HTTP_AUTHORIZATION'),
  38. returntpye='pc')
  39. # if tko.code != 0:
  40. # return response.json(tko.code)
  41. response.lang = tko.lang
  42. userID = tko.userID
  43. if operation == 'getRequestList':
  44. return self.getRequestList(request_dict, response)
  45. def getRequestList(self, request_dict, response):
  46. pageNo = request_dict.get('pageNo', None)
  47. pageSize = request_dict.get('pageSize', None)
  48. method = request_dict.get('method', None)
  49. url = request_dict.get('url', None)
  50. parameter = request_dict.get('parameter', None)
  51. status_code = request_dict.get('status_code', None)
  52. reason_phrase = request_dict.get('reason_phrase', None)
  53. if not all([pageNo, pageSize]):
  54. return response.json(444)
  55. page = int(pageNo)
  56. line = int(pageSize)
  57. try:
  58. request_qs = RequestRecordModel.objects.all()
  59. if method:
  60. request_qs = request_qs.filter(method=method)
  61. if url:
  62. request_qs = request_qs.filter(url__contains=url)
  63. if parameter:
  64. request_qs = request_qs.filter(parameter__contains=parameter)
  65. if status_code:
  66. request_qs = request_qs.filter(status_code=status_code)
  67. if reason_phrase:
  68. request_qs = request_qs.filter(reason_phrase=reason_phrase)
  69. count = request_qs.count()
  70. request_qs = request_qs.order_by('-add_time') # 根据CDK创建时间降序排序
  71. request_qs = request_qs[(page - 1) * line:page * line]
  72. qs_list = []
  73. for requsetobj in request_qs:
  74. hh = str(requsetobj.execute_time)
  75. if len(hh)>4:
  76. hh = hh[0:4]
  77. qs_list.append({
  78. 'id': requsetobj.id,
  79. 'method': requsetobj.method,
  80. 'url': requsetobj.url,
  81. 'parameter': requsetobj.parameter,
  82. 'execute_time': hh,
  83. 'status_code': requsetobj.status_code,
  84. 'reason_phrase': requsetobj.reason_phrase,
  85. 'add_time': requsetobj.add_time.strftime("%Y-%m-%d %H:%M:%S"),
  86. })
  87. return response.json(
  88. 0, {'list': qs_list, 'total': count})
  89. except Exception as e:
  90. print(e)
  91. return response.json(500, repr(e))