예제 #1
0
def user_bind():
    verify_code = int(request_value(request, 'code'))
    pwd = request_value(request, 'pwd')
    email = request_value(request, 'email').strip()
    username = request_value(request, 'username').strip()

    auth, user_id, pass_email, auth_username = RGUIController.do_auth_more_info(
        need_request_email=False)
    if not auth or username != auth_username:
        return jsonify(form_res(RGResCode.auth_fail))

    uid, res = user.verify_user(username=username,
                                email=email,
                                pwd=pwd,
                                verify_code=verify_code,
                                verify_type=RGVerifyType.bind)

    if uid is not None:
        token = RGUIController.token_session(uid=uid,
                                             token_type=session['type'],
                                             username=username,
                                             email=email,
                                             remember=None)
        return jsonify(form_res(RGResCode.ok, {'token': token}))
    else:
        return jsonify(form_res(res, None))
예제 #2
0
def user_file_del(user_id):
    user_file_id = request_value(request, 'id')

    if user_file_id is None:
        return jsonify(form_res(RGResCode.lack_param))

    conn = None
    try:
        conn = dao.get()

        delete_files = files.user_file_del_and_return_files(user_id=user_id,
                                                            id=user_file_id,
                                                            conn=conn)

        if len(delete_files) > 0:
            executor.submit(do_del_file, delete_files)

        conn.commit()
        return jsonify(form_res(RGResCode.ok, None))
    except Exception as e:
        print(e)
        conn.rollback()
        conn.commit()
        return jsonify(form_res(RGResCode.del_fail, None))
    finally:
        if conn:
            conn.close()
예제 #3
0
def ui_render_template(template_name_or_list, **context):

    art_user_id = request_value(request, 'user_id', None)
    need_user = int(request_value(request, 'needUserInfo', 0))

    if need_user > 0 and (art_user_id is None
                          or is_int_number(art_user_id) is False):
        return jsonify(form_res(RGResCode.lack_param))

    params = dict({"js_ver": RGJSVersion, "css_ver": RGCSSVersion}, **context)
    render = render_template(template_name_or_list, **params)

    if need_user > 0:
        from Model import user
        auth, view_user_id = do_auth()
        relation = user.get_relation(view_user_id, art_user_id)
        re_relation = user.get_relation(art_user_id, view_user_id)
        t = {
            "user": user.get_user(art_user_id).__dict__,
            "home": user.isHome(view_user_id, art_user_id),
            "auth": view_user_id is not None,
            "relation": relation,
            "re_relation": re_relation,
            'render': render
        }
        return jsonify(form_res(RGResCode.ok, t))
    return render
예제 #4
0
def user_password():
    username = request_value(request, 'username')
    if username is not None:
        username = username.strip()

    pwd = request_value(request, 'pwd')
    verify_code = int(request_value(request, 'code', default='0'))

    uid, res = user.verify_user(username=username,
                                email=None,
                                pwd=pwd,
                                verify_code=verify_code,
                                verify_type=RGVerifyType.forget_pwd)

    if uid is not None:
        _user = user.get_user_with_username(username=username, need_email=True)
        remember = int(request_value(request, 'remember', default='0'))
        token_type = int(request_value(request, 'type', default='0'))
        token = RGUIController.token_session(uid=uid,
                                             token_type=token_type,
                                             username=username,
                                             email=_user.email,
                                             remember=remember)
        return jsonify(form_res(RGResCode.ok, {'token': token}))
    else:
        return jsonify(form_res(res, None))
예제 #5
0
def user_file_directory_list(user_id):
    directory_id = request_value(request, 'directory_id', -1)
    try:
        result = files.user_file_directory_list(user_id=user_id,
                                                directory_id=directory_id)
        return jsonify(form_res(RGResCode.ok, result))
    except:
        return jsonify(form_res(RGResCode.database_error))
예제 #6
0
def user_file_search(user_id):
    name = request_value(request, 'name')
    if name is None or len(name) <= 0:
        return jsonify(form_res(RGResCode.lack_param))
    try:
        result = files.user_file_list_with_name(user_id=user_id, name=name)
        return jsonify(form_res(RGResCode.ok, result))
    except:
        return jsonify(form_res(RGResCode.database_error))
예제 #7
0
def user_logout(user_id):
    t = get_data_with_request(request)
    token_type = int(t['type'])

    result = tokens.destroy_token(user_id=user_id, token_type=token_type)

    if result:
        RGUIController.token_session_remove()
        return jsonify(form_res(RGResCode.ok, None))
    else:
        return jsonify(form_res(RGResCode.del_fail, None))
예제 #8
0
def user_file_size(user_id):
    user_file_id = request_value(request, 'id', -1)
    if user_file_id is None:
        return jsonify(form_res(RGResCode.lack_param))

    user_file_id = int(user_file_id)
    error, file_size = files.user_file_size(user_id=user_id, id=user_file_id)
    if error is None:
        code = RGResCode.ok
    else:
        code = RGResCode.database_error
    return jsonify(form_res(code, {"size": file_size}))
예제 #9
0
def user_file_info(user_id):
    file_id = request_value(request, 'id')
    if file_id is None:
        return jsonify(form_res(RGResCode.lack_param))

    info = files.user_file_info(user_id=user_id, id=file_id)
    if info is not None:
        del info['filename']
        code = RGResCode.ok
    else:
        code = RGResCode.database_error
    return jsonify(form_res(code, {"file": info}))
예제 #10
0
def user_edit_title(user_id):
    t = get_data_with_request(request)
    if 'name' in t:
        name = t['name']
        flag = user.update_title(user_id, name)
        if flag is True:
            code = RGResCode.ok
        else:
            code = RGResCode.not_existed
        return jsonify(form_res(code, None))
    else:
        return jsonify(form_res(RGResCode.lack_param, None))
예제 #11
0
def user_file_open_code_cancel(user_id):
    file_id = request_value(request, 'id')
    if file_id is None:
        return jsonify(form_res(RGResCode.lack_param))
    flag = files.user_file_set(user_id=user_id,
                               id=file_id,
                               args={"open_code": None})
    if flag:
        code = RGResCode.ok
    else:
        code = RGResCode.database_error
    return jsonify(form_res(code))
예제 #12
0
def user_file_share_code(user_id):
    file_id = request_value(request, 'id')
    if file_id is None:
        return jsonify(form_res(RGResCode.lack_param))
    share_code = RGRequestHelp.fid_encode(file_id, user_id)
    flag = files.user_file_set(user_id=user_id,
                               id=file_id,
                               args={"open_code": share_code})
    if flag:
        code = RGResCode.ok
    else:
        share_code = None
        code = RGResCode.database_error
    return jsonify(form_res(code, {"shareCode": share_code}))
예제 #13
0
def user_visit_page_info(view_user_id):
    art_user_id = request_value(request, 'user_id', None)
    if art_user_id is None or is_int_number(art_user_id) is False:
        return jsonify(form_res(RGResCode.lack_param))

    relation = user.get_relation(view_user_id, art_user_id)
    re_relation = user.get_relation(art_user_id, view_user_id)
    t = {
        "user": user.get_user(art_user_id).__dict__,
        "home": user.isHome(view_user_id, art_user_id),
        "auth": view_user_id is not None,
        "relation": relation,
        "re_relation": re_relation,
    }
    return jsonify(form_res(RGResCode.ok, t))
예제 #14
0
def user_file_path_get(user_file_id, path):
    if user_file_id is None:
        return jsonify(form_res(RGResCode.lack_param))
    user_file_id = re.sub("[^A-Za-z0-9].*", "", user_file_id)
    if not is_int_number(user_file_id):
        return jsonify(form_res(RGResCode.lack_param))
    auth, user_id = RGUIController.do_auth()
    session.removeVaryCookie = True
    file = files.user_file_info(user_id=user_id, id=user_file_id, type=0)

    if path is not None:
        file['filename'] = file['filename'] + '/' + path
        file['name'] = path.split('/')[-1]
        del file['mime']
    return __get_file_stream(file, max_age=86400)
예제 #15
0
def user_check():
    username = request_value(request, 'username', default=None)
    if username is None:
        return jsonify(form_res(RGResCode.lack_param))

    exist = False
    _user = user.login_sign_check(username)
    if _user is None:
        code, _users = User.RGOpenIdController.user_list(username)
        if code == RGResCode.ok and len(_users) > 0:
            exist = True
    else:
        exist = True
    code = RGResCode.ok if exist else RGResCode.not_existed
    return jsonify(form_res(code, _user))
예제 #16
0
def user_file_move(user_id):
    user_file_id = request_value(request, 'id')
    if user_file_id is None:
        return jsonify(form_res(RGResCode.lack_param))

    to_id = request_value(request, 'to_id')
    if to_id is None:
        return jsonify(form_res(RGResCode.lack_param))
    flag = files.user_file_move(user_id=user_id,
                                move_id=user_file_id,
                                to_id=to_id)
    if flag is True:
        code = RGResCode.ok
    else:
        code = RGResCode.del_fail
    return jsonify(form_res(code, None))
예제 #17
0
def art_group_edit(user_id):
    t = get_data_with_request(request)

    if 'id' in t:
        group_id = t['id']
    else:
        group_id = None

    if 'name' in t:
        name = t['name']
    else:
        name = None

    if 'level' in t:
        level = t['level']
    else:
        level = None

    flag = article.update_group_info(user_id=user_id,
                                     g_id=group_id,
                                     name=name,
                                     level=level)

    code = RGResCode.ok if flag is True else RGResCode.update_fail
    res = form_res(code, None)
    return jsonify(res)
예제 #18
0
def art_month_view(user_id):
    t = get_data_with_request(request)

    if 'user_id' in t:
        art_user = int(t['user_id'])
    else:
        art_user = None

    if 'timezone' in t:
        timezone = int(t['timezone'])
    else:
        timezone = 8

    if 'group_id' in t:
        group_id = t['group_id']
        if len(group_id) > 0:
            group_id = int(group_id)
        else:
            group_id = None
    else:
        group_id = None

    result = article.months_list_view(art_user=art_user,
                                      other_id=user_id,
                                      group_id=group_id,
                                      timezone=timezone)

    res = form_res(1000, result)
    return jsonify(res)
예제 #19
0
def pic_edit(user_id):
    t = get_data_with_request(request)

    title = None
    desc = None
    level = None
    p_id = None

    if 'title' in t:
        title = t['title']

    if 'desc' in t:
        desc = t['desc']

    if 'level' in t:
        level = t['level']

    if 'id' in t:
        p_id = t['id']

    flag = pic.update_info(p_id=p_id,
                           user_id=user_id,
                           title=title,
                           desc=desc,
                           level=level)
    if flag is True:
        code = RGResCode.ok
    else:
        code = RGResCode.update_fail
    return jsonify(form_res(code, None))
예제 #20
0
def album_new(user_id):
    t = get_data_with_request(request)

    title = None
    desc = None
    level = None
    cover = None

    if 'title' in t:
        title = t['title']

    if 'desc' in t:
        desc = t['desc']

    if 'level' in t:
        level = t['level']

    if 'cover' in t:
        cover = t['cover']

    flag = album.new_album(user_id=user_id,
                           title=title,
                           desc=desc,
                           cover=cover,
                           level=level)

    if flag is not None:
        code = RGResCode.ok
    else:
        code = RGResCode.update_fail
    return jsonify(form_res(code, flag))
예제 #21
0
def user_file_set(user_id):
    user_file_id = request_value(request, 'id')
    if user_file_id is None:
        return jsonify(form_res(RGResCode.lack_param))

    args = {}
    personal_name = request_value(request, 'name')

    if personal_name is not None:
        args['personal_name'] = personal_name

    flag = files.user_file_set(user_id=user_id, id=user_file_id, args=args)
    if flag is True:
        code = RGResCode.ok
    else:
        code = RGResCode.update_fail
    return jsonify(form_res(code, None))
예제 #22
0
def apply_read_count():
    if request_ip(request, default=request.remote_addr) != '127.0.0.1':
        return jsonify(form_res(-1))

    ids = []
    counts = []

    for art_id, read_item in ReadCountMap.items():
        # readers = read_item['readers']
        count = read_item['count']
        if count > 0:
            counts.append(count)
            ids.append(art_id)
            read_item['count'] = 0

    article.add_art_read_count(ids, counts)
    res = form_res(1000)
    return jsonify(res)
예제 #23
0
def pic_delete(user_id):
    t = get_data_with_request(request)
    if 'id' in t:
        p_id = t['id']
        pic.delete(user_id=user_id, p_id=p_id)
        code = RGResCode.ok
    else:
        code = RGResCode.lack_param
    return jsonify(form_res(code, None))
예제 #24
0
def user_login():
    username = request_value(request, 'username').strip()
    pwd = request_value(request, 'pwd')
    _user = user.user_login(username, pwd)

    remember = int(request_value(request, 'remember', default='0'))
    token_type = int(request_value(request, 'type', default='0'))

    if _user is not None:
        token = RGUIController.token_session(uid=_user.ID,
                                             token_type=token_type,
                                             username=_user.username,
                                             email=_user.email,
                                             remember=remember)
        resp = jsonify(form_res(RGResCode.ok, {'token': token}))
        return resp
    else:
        return jsonify(form_res(RGResCode.not_existed, None))
예제 #25
0
def user_file_open_list(**params):
    """
    根据 openCode 获取文件列表
    """
    result, error = files.user_file_files_relative_with_id(
        user_id=params['u_id'], id=params['f_id'], conn=params['conn'])
    if error is not None:
        raise error
    return jsonify(form_res(RGResCode.ok, result))
예제 #26
0
def cancel_follow(user_id):
    t = get_data_with_request(request)

    flag, relation = user.cancel_follow(user_id, t['id'])

    if flag is True:
        code = RGResCode.ok
    else:
        code = RGResCode.del_fail
    return jsonify(form_res(code, None))
예제 #27
0
def user_file_relative_list(user_id):
    code = request_value(request, 'code')
    if code is None:
        return jsonify(form_res(RGResCode.lack_param))
    u_id = None
    try:
        directory_id, u_id = RGRequestHelp.did_decode(code)
    except Exception as e:
        return jsonify(form_res(RGResCode.param_error))
    finally:
        if u_id != user_id:
            return jsonify(form_res(RGResCode.auth_fail))
    try:
        result, error = files.user_file_files_relative_with_id(user_id=user_id,
                                                               id=directory_id)
        if error is not None:
            raise error
        return jsonify(form_res(RGResCode.ok, result))
    except:
        return jsonify(form_res(RGResCode.database_error))
예제 #28
0
def art_del(user_id):
    t = get_data_with_request(request)

    if 'id' in t:
        art_id = t['id']
    else:
        art_id = None

    flag, art = article.del_art(user_id, art_id)
    code = RGResCode.ok if flag is True else RGResCode.insert_fail
    res = form_res(code, None)
    return jsonify(res)
예제 #29
0
def __get_file_stream(file, max_age=604800):
    filename = file[
        'filename'] if file is not None and 'filename' in file else None
    mime = file['mime'] if file is not None and 'mime' in file else None
    name = file['name'] if file is not None and 'name' in file else None

    img_quality = request_value(request, 'img_quality', 'original')
    if img_quality == 'low':
        filename = name_fix(filename=filename, thumb=True, gif_activity=False)
    if filename is None:
        return jsonify(form_res(RGResCode.not_existed))
    return handle_download_file(filename, name, mime=mime, max_age=max_age)
예제 #30
0
def new_file(user_id):
    """
    上传文件
    body 参数:
        fileUpInfo      文件信息
        {file}          文件流
    """
    re_files = request.files
    file_up_info = request_value(request, 'fileUpInfo')
    if file_up_info is None:
        return jsonify(form_res(RGResCode.lack_param))
    file_up_info = json.loads(file_up_info, encoding="utf-8")

    for file_key in re_files:
        up_info = file_up_info.get(file_key, None)
        if up_info is None:
            return jsonify(form_res(RGResCode.lack_param))
        if up_info.get('md5', None) is None:
            return jsonify(form_res(RGResCode.lack_param))
        if up_info.get('in_file', 0):
            if not files.capacity_enough(
                    user_id=user_id, new_file_size=request_file_size(request)):
                return jsonify(form_res(RGResCode.full_size))

    code, result = do_new_file()
    if code != RGResCode.ok:
        return jsonify(form_res(code))

    data = {}
    for up_res in result:
        file_key = up_res['key']

        up_info = file_up_info.get(file_key)
        set_name = up_info.get('name', '')

        in_album = up_info.get('in_album', 0)
        album_id = up_info.get('album_id', -1)

        in_file = up_info.get('in_file', 0)
        did = up_info.get('directory_id', -1)

        handle = handler_upload_res(user_id,
                                    up_res=up_res,
                                    set_name=set_name,
                                    in_album=in_album,
                                    album_id=album_id,
                                    in_file=in_file,
                                    directory_id=did)

        code = handle['code']
        data[file_key] = {
            'code': code,
            'file': handle['data'],
        }

        if code != RGResCode.ok and 'path' in up_res:
            del_filename = up_res['path']
            executor.submit(do_del_file, [del_filename])

    return jsonify(form_res(RGResCode.ok, data))