# -*- coding: utf-8 -*- import os import re import traceback from random import Random # 用于生成随机码 from wsgiref.util import FileWrapper from django.contrib.auth.hashers import make_password from django.http import HttpResponse from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from django.views.generic import TemplateView from Ansjer.settings import BASE_DIR from Model.models import Device_User from Object.ResponseObject import ResponseObject # 生成随机字符串 def RandomStr(randomlength=8, number=False): str = '' if number == False: characterSet = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsT' \ 'tUuVvWwXxYyZz0123456789' else: characterSet = '0123456789' length = len(characterSet) - 1 random = Random() for index in range(randomlength): str += characterSet[random.randint(0, length)] return str def date_handler(obj): return obj.isoformat() class ModifyPwdView(TemplateView): @method_decorator(csrf_exempt) def dispatch(self, *args, **kwargs): return super(ModifyPwdView, self).dispatch(*args, **kwargs) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' userEmail = request.POST.get('userEmail', None) oldPwd = request.POST.get('oldPwd', None) newPwd = request.POST.get('newPwd', None) return self.ValidationError(userEmail, oldPwd, newPwd) def get(self, request, *args, **kwargs): request.encoding = 'gb2312' userEmail = request.GET.get('userEmail', None) oldPwd = request.GET.get('oldPwd', None) newPwd = request.GET.get('newPwd', None) return self.ValidationError(userEmail, oldPwd, newPwd) def ValidationError(self, userEmail, oldPwd, newPwd): response = ResponseObject() dataValid = DataValid() if dataValid.password_validate(newPwd): if oldPwd != newPwd: return response.json(118) try: User = Device_User.objects.get(userEmail=userEmail) User.userPwd = make_password(newPwd) User.save() except Exception as e: errorInfo = traceback.format_exc() print('更新密码到数据库: %s' % errorInfo) return response.json(501, {'msg': repr(e)}) else: return response.json(0) else: return response.json(109) class DataValid: def __init__(self): # 用户名正则 # self.re_name = re.compile(r'^[A-Za-z0-9\u4e00-\u9fa5\.\_]{1,16}$') self.re_name = re.compile(r'^[A-Za-z0-9\u4e00-\u9fa5\.\_\-\@]{4,40}$') # 密码强度正则 self.re_password = re.compile(r'^\w{1,16}$') # 手机号码正则 self.re_mobile = re.compile(r'^\d{1,16}$') # 邮箱地址正则 self.re_email = re.compile(r'^[A-Za-z0-9\u4e00-\u9fa5\.\_\-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)+$') def name_validate(self, value): if self.re_name.match(value): return True else: return False def password_validate(self, value): if self.re_password.match(value): return True else: return False def email_validate(self, value): if self.re_email.match(value): return True else: return False def mobile_validate(self, value): if self.re_mobile.match(value): return True else: return False @csrf_exempt def download_file(request, Upgradename, *callback_args, **callback_kwargs): """ 下载单个文件 :param request: :param Upgradename: :param callback_args: :param callback_kwargs: :return: """ print(Upgradename) print(callback_args, callback_kwargs) for value in callback_args: print("other args:", value) # 打印dict类型的不定长参数 args for key in callback_kwargs: print("dictargs:" + key + ":" + bytes(callback_kwargs[key])) print(request.body) file_name = os.path.join(BASE_DIR, "static/Upgrade/DVR/").replace('\\', '/') + Upgradename response = ResponseObject() if os.path.isfile(file_name): try: print(file_name) JSON = response.formal(0) wrapper = FileWrapper(open(file_name, 'rb')) response = HttpResponse(wrapper, content_type="application/octet-stream") response['Content-Length'] = os.path.getsize(file_name) response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(file_name) response['Content-Error'] = JSON return response except Exception as e: errorJSON = response.formal(10, 'Wrong reason:' + repr(e)) response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8') response['Content-Error'] = errorJSON return response else: errorJSON = response.formal(907) response = HttpResponse(errorJSON, content_type='text/plain', charset='utf-8') response['Content-Error'] = errorJSON return response