MiscellService.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import datetime
  2. import json
  3. import threading
  4. from django.utils.timezone import utc
  5. from Model.models import Access_Log
  6. from Object.TokenObject import TokenObject
  7. from Service.CommonService import CommonService
  8. from Service.TemplateService import TemplateService
  9. class MiscellService:
  10. @staticmethod
  11. def add_access_log(request, status_code):
  12. asy = threading.Thread(target=add_log_thread, args=(request, status_code))
  13. asy.start()
  14. def add_log_thread(request, status_code):
  15. try:
  16. request.encoding = 'utf-8'
  17. if request.method == 'GET':
  18. request_dict = request.GET
  19. elif request.method == 'POST':
  20. request_dict = request.POST
  21. else:
  22. return
  23. api_list = TemplateService.log_api()
  24. request_path = request.path.strip().strip('/')
  25. if request_path in api_list:
  26. user = get_access_name(request_dict=request_dict)
  27. ip = CommonService.get_ip_address(request)
  28. now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
  29. password = request_dict.get('userPwd', None)
  30. if password is not None:
  31. request_dict = dict(request_dict)
  32. request_dict.pop('userPwd')
  33. content = json.dumps(request_dict)
  34. add_data = {
  35. 'user': user,
  36. 'ip': ip,
  37. 'status': status_code,
  38. 'url': request.META['SERVER_PROTOCOL'] + '-' + request.method + '-' + request.path,
  39. 'operation': request_path,
  40. 'time': now_time,
  41. 'content': content
  42. }
  43. Access_Log.objects.create(**add_data)
  44. except Exception as e:
  45. print(repr(e))
  46. pass
  47. def get_access_name(request_dict):
  48. user_name = request_dict.get('userName', None)
  49. if user_name:
  50. return user_name
  51. email = request_dict.get('email', None)
  52. if email:
  53. return email
  54. phone = request_dict.get('phone', None)
  55. if phone:
  56. return phone
  57. token = request_dict.get('token', None)
  58. user = ''
  59. if token is not None:
  60. tko = TokenObject(token)
  61. if tko.code == 0:
  62. user = tko.user
  63. return user