Пример #1
0
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)
Пример #2
0
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='注册成功')
Пример #3
0
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)
Пример #4
0
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
Пример #5
0
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)
Пример #6
0
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='验证码发送成功')