| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | # -*- coding: utf-8 -*-import osimport reimport tracebackfrom random import Random  # 用于生成随机码from wsgiref.util import FileWrapperfrom django.contrib.auth.hashers import make_passwordfrom django.http import HttpResponsefrom django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import csrf_exemptfrom django.views.generic import TemplateViewfrom Ansjer.settings import BASE_DIRfrom Model.models import Device_Userfrom 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 strdef 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_exemptdef 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
 |