DeviceLog.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/6/15 16:47
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: DeviceLog.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. import datetime
  15. from django.views.decorators.csrf import csrf_exempt
  16. from Model.models import Device_Info
  17. from Object.mongodb import mongodb
  18. from Service.TokenManager import JSONTokenManager
  19. from Service.ModelService import ModelService
  20. from Service.DeviceOperation import DeviceOperation
  21. from Service.ResponseService import *
  22. '''
  23. curl http://192.168.136.45:8077/devices/C2887N9EBS87ZAT1111A/logs -d "deviceData={\"UID\":\"C2887N9EBS87ZAT1111A\",\"type\":\"0x10014\",\"UserIP\":\"127.0.0.1\",\"time\":1529474865,\"name\":\"admin\"}"
  24. http://192.168.136.40:8077/devices/2N1K3LE78TYJ38CE111A/logs?type=All&starttime=1529462169&endtime=1529462169
  25. '''
  26. @csrf_exempt
  27. def DeviceLog(request, uid):
  28. # 存储设备日志
  29. if request.method == 'POST':
  30. request.encoding = 'utf-8'
  31. deviceData = request.POST.get('deviceData', None)
  32. device_info = Device_Info.objects.filter(UID=uid)
  33. if device_info.exists():
  34. try:
  35. data = json.loads(deviceData)
  36. mdb = mongodb()
  37. data['et'] = datetime.datetime.utcnow()
  38. col = "log_device_operation"
  39. id = mdb.insert_one(col=col, data=data)
  40. return ResponseJSON(0)
  41. # qs = mdb.findAll(col=col, page=1, line=10)
  42. except Exception as e:
  43. print(repr(e))
  44. return ResponseJSON(48,repr(e))
  45. else:
  46. return ResponseJSON(13)
  47. # 查找设备日志
  48. if request.method == 'GET':
  49. request.encoding = 'utf-8'
  50. token = request.GET.get('token', None)
  51. page = request.GET.get('page', None)
  52. line = request.GET.get('line', None)
  53. type = request.GET.get('type', None)
  54. search_class = request.GET.get('class', None)
  55. starttime = request.GET.get('starttime', None)
  56. endtime = request.GET.get('endtime', None)
  57. if token is not None:
  58. tokenManager = JSONTokenManager()
  59. error_code = tokenManager.verify_AToken(token)
  60. if error_code == 0:
  61. userID = tokenManager.accessDict.get('userID', None)
  62. if page is None and line is None:
  63. page = 1
  64. line = 10000
  65. param_flag = CommonService.get_param_flag(data=[userID, page, line, uid])
  66. own_dev = ModelService.check_own_device(userID=userID, UID=uid)
  67. own_per = ModelService.check_permission(userID=userID, permID=30)
  68. if own_dev is True or own_per is True:
  69. if param_flag is True:
  70. query = {'uid': uid}
  71. if search_class == 'All' or type == 'All':
  72. pass
  73. else:
  74. try:
  75. class_data= DeviceOperation.getODla(search_class=search_class)
  76. query['type'] = {'$gte': class_data[0], '$lte': class_data[1]}
  77. except Exception as e:
  78. if type is not None:
  79. query['type'] = type
  80. # if starttime is not None and endtime is not None and starttime != '' and endtime != '':
  81. # query['time'] = {'$gte': int(starttime), '$lte': int(endtime)}
  82. if starttime is not None and starttime != '' and endtime is not None and endtime != '':
  83. query['time'] = {'$gte': int(starttime), '$lte': int(endtime)}
  84. elif starttime is not None and starttime != '':
  85. query['time'] = {'$gte': int(starttime)}
  86. elif endtime is not None and endtime != '':
  87. query['time'] = {'$lte': int(endtime)}
  88. print('___________query____________')
  89. print(query)
  90. print('___________query____________')
  91. mdb = mongodb()
  92. col = "log_device_operation"
  93. # if int(page) < 0:
  94. # count = mdb.cout(col=col,query=query)
  95. # total = math.ceil(count/int(line))
  96. # page = int(total)+int(page)+1
  97. qs = mdb.findAll(col=col, page=int(page), line=int(line), query=query)
  98. if qs is not False:
  99. data_list = []
  100. for i in qs['data']:
  101. i['type'] = DeviceOperation.getOperation(type=i['type'])
  102. data_list.append(i)
  103. qs['data'] = data_list
  104. return ResponseJSON(0,qs)
  105. else:
  106. return ResponseJSON(404)
  107. return ResponseJSON(444)
  108. else:
  109. return HttpResponse(tokenManager.errorCodeInfo(error_code))
  110. else:
  111. return ResponseJSON(311)