CheckUserData.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import re
  4. import traceback
  5. from random import Random # 用于生成随机码
  6. from wsgiref.util import FileWrapper
  7. from django.contrib.auth.hashers import make_password
  8. from django.http import HttpResponse
  9. from django.utils.decorators import method_decorator
  10. from django.views.decorators.csrf import csrf_exempt
  11. from django.views.generic import TemplateView
  12. from Ansjer.settings import BASE_DIR
  13. from Model.models import Device_User
  14. from Object.ResponseObject import ResponseObject
  15. # 生成随机字符串
  16. def RandomStr(randomlength=8, number=False):
  17. str = ''
  18. if number == False:
  19. characterSet = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsT' \
  20. 'tUuVvWwXxYyZz0123456789'
  21. else:
  22. characterSet = '0123456789'
  23. length = len(characterSet) - 1
  24. random = Random()
  25. for index in range(randomlength):
  26. str += characterSet[random.randint(0, length)]
  27. return str
  28. def date_handler(obj):
  29. return obj.isoformat()
  30. class ModifyPwdView(TemplateView):
  31. @method_decorator(csrf_exempt)
  32. def dispatch(self, *args, **kwargs):
  33. return super(ModifyPwdView, self).dispatch(*args, **kwargs)
  34. def post(self, request, *args, **kwargs):
  35. request.encoding = 'utf-8'
  36. userEmail = request.POST.get('userEmail', None)
  37. oldPwd = request.POST.get('oldPwd', None)
  38. newPwd = request.POST.get('newPwd', None)
  39. return self.ValidationError(userEmail, oldPwd, newPwd)
  40. def get(self, request, *args, **kwargs):
  41. request.encoding = 'gb2312'
  42. userEmail = request.GET.get('userEmail', None)
  43. oldPwd = request.GET.get('oldPwd', None)
  44. newPwd = request.GET.get('newPwd', None)
  45. return self.ValidationError(userEmail, oldPwd, newPwd)
  46. def ValidationError(self, userEmail, oldPwd, newPwd):
  47. response = ResponseObject()
  48. dataValid = DataValid()
  49. if dataValid.password_validate(newPwd):
  50. if oldPwd != newPwd:
  51. return response.json(118)
  52. try:
  53. User = Device_User.objects.get(userEmail=userEmail)
  54. User.userPwd = make_password(newPwd)
  55. User.save()
  56. except Exception as e:
  57. errorInfo = traceback.format_exc()
  58. print('更新密码到数据库: %s' % errorInfo)
  59. return response.json(501, {'msg': repr(e)})
  60. else:
  61. return response.json(0)
  62. else:
  63. return response.json(109)
  64. class DataValid:
  65. def __init__(self):
  66. # 用户名正则
  67. # self.re_name = re.compile(r'^[A-Za-z0-9\u4e00-\u9fa5\.\_]{1,16}$')
  68. self.re_name = re.compile(r'^[A-Za-z0-9\u4e00-\u9fa5\.\_\-\@]{4,40}$')
  69. # 密码强度正则
  70. self.re_password = re.compile(r'^\w{1,16}$')
  71. # 手机号码正则
  72. self.re_mobile = re.compile(r'^\d{1,16}$')
  73. # 邮箱地址正则
  74. self.re_email = re.compile(r'^[A-Za-z0-9\u4e00-\u9fa5\.\_\-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)+$')
  75. def name_validate(self, value):
  76. if self.re_name.match(value):
  77. return True
  78. else:
  79. return False
  80. def password_validate(self, value):
  81. if self.re_password.match(value):
  82. return True
  83. else:
  84. return False
  85. def email_validate(self, value):
  86. if self.re_email.match(value):
  87. return True
  88. else:
  89. return False
  90. def mobile_validate(self, value):
  91. if self.re_mobile.match(value):
  92. return True
  93. else:
  94. return False
  95. @csrf_exempt
  96. def download_file(request, Upgradename, *callback_args, **callback_kwargs):
  97. """
  98. 下载单个文件
  99. :param request:
  100. :param Upgradename:
  101. :param callback_args:
  102. :param callback_kwargs:
  103. :return:
  104. """
  105. print(Upgradename)
  106. print(callback_args, callback_kwargs)
  107. for value in callback_args:
  108. print("other args:", value)
  109. # 打印dict类型的不定长参数 args
  110. for key in callback_kwargs:
  111. print("dictargs:" + key + ":" + bytes(callback_kwargs[key]))
  112. print(request.body)
  113. file_name = os.path.join(BASE_DIR, "static/Upgrade/DVR/").replace('\\', '/') + Upgradename
  114. response = ResponseObject()
  115. if os.path.isfile(file_name):
  116. try:
  117. print(file_name)
  118. JSON = response.formal(0)
  119. wrapper = FileWrapper(open(file_name, 'rb'))
  120. response = HttpResponse(wrapper, content_type="application/octet-stream")
  121. response['Content-Length'] = os.path.getsize(file_name)
  122. response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(file_name)
  123. response['Content-Error'] = JSON
  124. return response
  125. except Exception as e:
  126. errorJSON = response.formal(10, 'Wrong reason:' + repr(e))
  127. response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
  128. response['Content-Error'] = errorJSON
  129. return response
  130. else:
  131. errorJSON = response.formal(907)
  132. response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8')
  133. response['Content-Error'] = errorJSON
  134. return response