def duplicate_result(task_id): result = [] email = session.get('email') task = jaccard.AsyncResult(task_id) if task.state == 'SUCCESS': conn = Redis(host='127.0.0.1', port=6379, db=1) name = email + ':duplicate_result' res = conn.hgetall(name) for k, v in res.items(): new_k = k.decode('utf-8') new_v = v.decode('utf-8') splited_v = new_v.rsplit(',', 1) splited_v.insert(0, new_k) result.append(splited_v) result.sort(key=lambda x: x[2], reverse=True) generate_report.apply_async((email, ), serializer='json') # 这里直接在查重完成后就生成报表 redis_conn.delete(email + 'dump') redis_conn.delete(email + 'xls_path') progress = redis_conn.get(email + 'dump') response = {'state': task.state, 'result': result} if progress: progress = progress.decode('utf8') response['progress'] = progress return jsonify(response)
def signin(): '''用户注册接口 :return 返回注册信息{'re_code': '0', 'msg': '注册成功'} ''' nickname = request.json.get('nickname') email = request.json.get('email') password = request.json.get('password') mailcode_client = request.json.get('mailcode') if not all([email, nickname, password, mailcode_client]): return jsonify(re_code=RET.PARAMERR, msg='参数不完整') #从Redis中获取此邮箱对应的验证码,与前端传来的数据校验 try: mailcode_server = redis_conn.get('EMAILCODE:' + email).decode() except Exception as e: current_app.logger.debug(e) return jsonify(re_code=RET.DBERR, msg='查询邮箱验证码失败') if mailcode_server != mailcode_client: current_app.logger.debug(mailcode_server) return jsonify(re_code=RET.PARAMERR, msg='邮箱验证码错误') user = User() user.email = email user.nickname = nickname user.password = password #利用user model中的类属性方法加密用户的密码并存入数据库 try: db.session.add(user) db.session.commit() except Exception as e: current_app.logger.debug(e) db.session.rollback() return jsonify(re_code=RET.DBERR, msg='注册失败') #6.响应结果 return jsonify(re_code=RET.OK, msg='注册成功')
def save_emails_status(task_id): task = download_email.AsyncResult(task_id) progress_num = session.get('email') + 'download_progress' progress = redis_conn.get(progress_num) if progress: progress = progress.decode('utf8') redis_conn.delete(progress_num) response = {'state': task.state, 'progress': progress} return jsonify(response)
def get_user_from_auth_token(token): redis_user = redis_conn.get(token) if not redis_user: return None redis_conn.expire(token, 900) user = User() user = user.from_json(redis_user.decode()) return user
def show_attachments(): email = session.get('email') save_dir = redis_conn.get('save_dir' + email) redis_conn.delete(save_dir) save_dir = save_dir.decode("utf8") path = save_dir.split('/')[-1] res = [] task = send_remail.apply_async((email, ), serializer='json') #向学生发送回执邮件 try: attachments = listdir(save_dir) for attach in attachments: res.append(attach) except: pass return render_template('show_attachments.html', index_list=res, email=email, root=True, path=path, stask_id=task.id)
def send_sms_code(): """发送手机短信息验证码: 1.接收参数,手机号,图片验证码,uuid 2.校验数据 3.判断图片验证码是否正确,如果正确 4.发送短信验证码 """ # 1.接收参数,手机号,图片验证码,uuid json_str = request.data json_dict = json.loads(json_str) phone_num = json_dict.get('phone_num') image_code_client = json_dict.get('image_code') uuid = json_dict.get('uuid') # 2.校验数据 if not all([phone_num, image_code_client, uuid]): return jsonify(re_code=RET.PARAMERR, msg='参数缺少') # 校验手机号是否正确 if not re.match(r'^0\d{2,3}\d{7,8}$|^1[358]\d{9}$|^147\d{8}$', phone_num): return jsonify(re_code=RET.PARAMERR, msg='手机号不正确') #判断用户是否已注册 try: user = User.query.filter(User.phone_num == phone_num).first() except Exception as e: current_app.logger.debug(e) return jsonify(re_code=RET.DBERR, msg='查询数据库错误') #用户存在,提示该账户已被注册 if user: return jsonify(re_code=RET.DATAEXIST, msg='该用户已被注册') # 3.判断图片验证码是否正确,如果正确 try: # 从Redis取出值图片验证码 image_code_server = redis_conn.get('ImageCode:' + uuid) except Exception as e: current_app.logger.debug(e) return jsonify(re_code=RET.DBERR, msg='获取服务器图片验证码失败') #判断为验证码空或者过期 if not image_code_server: return jsonify(re_code=RET.NODATA, msg='验证码已过期') #校验和前端传的验证码是否相等 if image_code_server.lower() != image_code_client.lower(): return jsonify(re_code=RET.DATAERR, msg='验证码输入有误') # 4.生成验证码 sms_code = '%06d' % random.randint(0, 99999) current_app.logger.debug('短信验证码为:' + sms_code) # 5.发送短信验证码 验证码 过期时间:容联的时间单位为:分 短信模板1 # result = CCP().send_sms('15770633066',[sms_code,constants.SMS_CODE_REDIS_EXPIRES/60],'1') # if result != 1: # # 短信发送失败 # return jsonify(re_code=RET.THIRDERR,msg='发送短信验证码失败') # 6.发送成功,验证码存储到Redis try: redis_conn.set('PhoneCode:' + phone_num, sms_code, constants.SMS_CODE_REDIS_EXPIRES) except Exception as e: current_app.logger.debug(e) return jsonify(re_code=RET.DBERR, msg='存储短信验证码失败') #响应结果 return jsonify(re_code=RET.OK, msg='验证码发送成功')