コード例 #1
0
ファイル: business.py プロジェクト: vigrep/RLink
def search_category(word, action=ActionCode.SEARCH_CATEGORY):
    try:
        wd = '%%%s%%' % word
        result = db.session.query(Link.category_id, Category.name, func.count(Link.category_id)) \
            .filter(or_(Link.name.like(wd),  Link.description.like(wd)))\
            .group_by(Link.category_id). \
            join(Category).all()

        if result is not None and isinstance(result, list):
            total_category_count = len(result)
            result_list = []
            for res in result:
                if len(res) == 3:
                    sub = dict()
                    sub["category_id"] = res[0]
                    sub["category_name"] = res[1]
                    sub["count"] = res[2]
                    result_list.append(sub)

            data = DictData()
            data.add("total_record", total_category_count)
            data.add("data", result_list)
            data.add("word", word)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, data)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #2
0
ファイル: CategoryManager.py プロジェクト: vigrep/RLink
def get_categories_by_page(page,
                           page_size,
                           conditions_dict,
                           action=ActionCode.GET_CATEGORY):
    try:
        query = add_conditions(Category, conditions_dict)
        paginate = query.order_by(Category.id.asc()).paginate(
            int(page), int(page_size), False)

        total_count = paginate.total
        categories = paginate.items

        category_list = list()
        for category in categories:
            category_list.append(category.json())

        result = DictData()
        result.add("total_record", total_count)
        result.add("total_pages", paginate.pages)
        result.add("current_page", paginate.page)
        result.add("current_page_size", paginate.per_page)
        result.add("has_prev", paginate.has_prev)
        result.add("has_next", paginate.has_next)
        result.add("data", category_list)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC,
                            result)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #3
0
ファイル: business.py プロジェクト: vigrep/RLink
def search(page, page_size, word, category_id=None, action=ActionCode.SEARCH_CATEGORY):
    try:
        wd = '%%%s%%' % word
        query = Link.query.filter(or_(Link.name.like(wd),  Link.description.like(wd)))
        if category_id is not None:
            query = query.filter_by(category_id=int(category_id))

        paginate = query.order_by(Link.update_datetime.desc()).paginate(int(page), int(page_size), False)
        total_count = paginate.total
        links = paginate.items
        links_list = list()
        for link in links:
            links_list.append(link.json())

        result = DictData()
        result.add("total_record", total_count)
        result.add("total_pages", paginate.pages)
        result.add("current_page", paginate.page)
        result.add("current_page_size", paginate.per_page)
        result.add("has_prev", paginate.has_prev)
        result.add("has_next", paginate.has_next)
        result.add("data", links_list)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #4
0
def login(username, password, remember_me, action=ActionCode.LOGIN):
    user = User.query.filter_by(name=username).first()
    if user is None:
        print("邮箱")
        user = User.query.filter_by(email=username).first()
        if user is not None and user.check_password(password):
            print("邮箱 密码成功")
            user.login_count += 1
            user.dingding()
            user.save()
            login_user(user, remember=remember_me)
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.LOGIN_SUCC)
        else:
            print("邮箱 密码失败")
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.LOGIN_FAILED)
    elif user.check_password(password):
        print("用户名 密码成功")
        user.login_count += 1
        user.save()
        login_user(user, remember=remember_me)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.LOGIN_SUCC)
    else:
        print("用户名 密码失败")
        return ActionResult(action, StatusCode.FAILED, MsgCode.LOGIN_FAILED)
コード例 #5
0
def get_user_links_by_page(user_id, page, page_size, action=ActionCode.GET_LINKS_BY_PAGE):
    try:
        user_id = int(user_id)
        page = int(page)
        page_size = int(page_size)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.PAGE_INVALID)

    try:
        user = User.query.filter_by(id=user_id).first()
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.USER_NOT_EXIST)

    if page <= 0:
        return ActionResult(action, StatusCode.FAILED, MsgCode.PAGE_INVALID)
    else:
        try:
            paginate = user.shared_links().paginate(int(page), int(page_size), False)
            # paginate = Link.query.order_by(Link.datetime.desc()).paginate(int(page), int(page_size), False)
            links = paginate.items
            links_total_count = paginate.total
            links_list = list()
            for link in links:
                links_list.append(link.json())

            result = DictData()
            result.add("total_record", links_total_count)
            result.add("data", links_list)
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
        except:
            traceback.print_exc()
            return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #6
0
ファイル: RoleManager.py プロジェクト: vigrep/RLink
def query_roles(page, page_size, conditions_dict, action=ActionCode.GET_ROLES):
    try:
        query = add_conditions(Role, conditions_dict)
        paginate = query.order_by(Role.id.asc()).paginate(
            int(page), int(page_size), False)

        total_count = paginate.total
        roles = paginate.items

        role_list = list()
        for role in roles:
            role_list.append(role.json())

        result = DictData()
        result.add("total_record", total_count)
        result.add("total_pages", paginate.pages)
        result.add("current_page", paginate.page)
        result.add("current_page_size", paginate.per_page)
        result.add("has_prev", paginate.has_prev)
        result.add("has_next", paginate.has_next)
        result.add("data", role_list)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC,
                            result)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #7
0
ファイル: params.py プロジェクト: vigrep/RLink
 def pack_result(self):
     if self.is_validate():
         return ActionResult(ActionCode.SEARCH_CATEGORY, StatusCode.SUCCESS, MsgCode.REQUEST_PARAM_CHECK_VALID)
     else:
         data = DictData()
         data.add("errors_info", self.errors)
         return ActionResult(ActionCode.SEARCH_CATEGORY, StatusCode.FAILED, MsgCode.REQUEST_PARAM_CHECK_INVALID, data)
コード例 #8
0
ファイル: SearchEngine.py プロジェクト: vigrep/RLink
def search(key_words, action=ActionCode.SEARCH_BY_KEY_WORDS):
    if key_words is None:
        return ActionResult(action, StatusCode.FAILED,
                            MsgCode.REQUEST_PARAM_NOT_FOUND)

    # FIXME: 单个关键字,在link的名称和简介中查询匹配的
    result = Link.query.filter(Link.name.like(key_words))
    print(result)
    result = Link.query.filter(Link.name.like(key_words)).all()
    print(result)
    return ActionResult(action, StatusCode.SUCCESS, MsgCode.SEARCH_SUCC)
コード例 #9
0
def del_links_by_ids(link_ids, action=ActionCode.DELETE_MULTI_LINK):
    try:
        if link_ids is None or not isinstance(link_ids, list):
            return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

        Link.query.filter(Link.id.in_(link_ids)).delete(synchronize_session=False)
        db.session.commit()
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.DELETE_SUCC)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.DELETE_FAILED)
コード例 #10
0
ファイル: CategoryManager.py プロジェクト: vigrep/RLink
def del_category_by_ids(category_ids, action=ActionCode.DELETE_CATEGORY):
    try:
        if category_ids is None or not isinstance(category_ids, list):
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.REQUEST_PARAM_NOT_FOUND)

        Category.query.filter(
            Category.id.in_(category_ids)).delete(synchronize_session=False)
        db.session.commit()
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.DELETE_SUCC)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.DELETE_FAILED)
コード例 #11
0
ファイル: RoleManager.py プロジェクト: vigrep/RLink
def add_role(role_dict, action=ActionCode.ADD_ROLE):
    try:
        role = Role()
        role.name = role_dict["name"]
        role.permissions = role_dict["permissions"]

        ok = role.save()
        if ok:
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.ADD_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
    except:
        return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
コード例 #12
0
ファイル: RoleManager.py プロジェクト: vigrep/RLink
def del_roles_by_ids(role_ids, action=ActionCode.DELETE_ROLE):
    try:
        if role_ids is None or not isinstance(role_ids, list):
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.REQUEST_PARAM_NOT_FOUND)

        Role.query.filter(
            Role.id.in_(role_ids)).delete(synchronize_session=False)
        db.session.commit()
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.DELETE_SUCC)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.DELETE_FAILED)
コード例 #13
0
ファイル: business.py プロジェクト: vigrep/RLink
def get_user_model_by_name(user_name, action=ActionCode.GET_USER_BY_NAME):
    if user_name is None:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

    try:
        user_name = str(user_name)
        user = User.query.filter_by(name=user_name).first()
        if user is not None:
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, user)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.USER_NOT_EXIST)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.USER_NOT_EXIST)
コード例 #14
0
def update_link(link_dict, action=ActionCode.UPDATE_LINK):
    try:
        if link_dict is None or not isinstance(link_dict, dict):
            return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

        if "id" in link_dict:
            try:
                link_id = int(link_dict["id"])
            except ValueError:     # 转换int错误会进到这里
                traceback.print_exc()
                return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_ERROR)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.LINK_ID_DISMISS)

        if link_id is None or link_id < 0:
            return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_ERROR)

        # 判断link_id 对应的数据是否存在数据库中
        db_link = Link.query.filter_by(id=link_id).first()
        if db_link is None:
            return ActionResult(action, StatusCode.FAILED, MsgCode.LINK_NOT_EXIST)

        # 更新到数据库中
        ok = db_link.update(link_dict)
        if ok:
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.UPDATE_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.UPDATE_FAILED)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.UPDATE_FAILED)
コード例 #15
0
ファイル: business.py プロジェクト: vigrep/RLink
def get_primary_link(action=ActionCode.GET_PRIMARY_LINK):
    try:
        primary_links = PrimaryLink.query.order_by(PrimaryLink.add_datetime.desc()).all()
        total_count = len(primary_links)
        links_list = list()
        for primary in primary_links:
            links_list.append({"url": primary.get_url(), "img": primary.get_img()})

        result = DictData()
        result.add("total_record", total_count)
        result.add("data", links_list)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #16
0
ファイル: UserManager.py プロジェクト: vigrep/RLink
def del_user_by_id(user_id, action=ActionCode.DELETE_USER):
    if user_id is None:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

    try:
        user_id = int(user_id)
        user = User.query.filter_by(id=user_id).first()
        if user is not None:
            db.session.delete(user)
            db.session.commit()
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.DELETE_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.USER_NOT_EXIST)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.DELETE_FAILED)
コード例 #17
0
def add_link_batch(json_file, action=ActionCode.BATCH_ADD_LINK_BY_FILE):
    if json_file is None:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

    try:
        file = open(json_file, encoding='utf-8')
        json_content = json.load(file)
        if json_content is None:
            return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)
    except:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_ERROR)

    if json_content['data'] is not None and len(json_content['data']) > 0:
        # 记录添加失败的id
        failed_list = list()
        for link in json_content['data']:
            action_result = add_link(json.dumps(link))
            if action_result.status_code != StatusCode.SUCCESS:
                failed_data = dict()
                failed_data['error_msg'] = MsgCode.get_message(action_result.msg_code)
                failed_data['link_info'] = link
                failed_list.append(failed_data)
        if len(failed_list) > 0:
            result = DictData()
            result.add("about", "未添加成功的数据")
            result.add("total_record", len(failed_list))
            result.add("failed_data", failed_list)
            if len(failed_list) == len(json_content['data']):
                return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED, result)
            else:
                return ActionResult(action, StatusCode.SUCCESS, MsgCode.ADD_PART_SUCC, result)
        else:
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.ADD_SUCC)
    else:
        return ActionResult(action, StatusCode.FAILED, MsgCode.LINK_IS_NULL)
コード例 #18
0
ファイル: UserManager.py プロジェクト: vigrep/RLink
def add_user(user_dict, action=ActionCode.ADD_USER):
    try:
        # 判断用户信息是否传入
        if user_dict is None or not isinstance(user_dict, dict):
            return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

        # 将dict中封装的用户信息,更新填充到新建的user对象中
        user = User()
        user.setvalue(user_dict)

        # 保存到数据库中
        ok = user.save()
        if ok:
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.ADD_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
    except:
        return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
コード例 #19
0
def add_link(link_dict, action=ActionCode.ADD_LINK):
    try:
        # 判断链接信息是否传入
        if link_dict is None or not isinstance(link_dict, dict):
            return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

        # 将dict中封装的链接信息,更新填充到新建的Link对象中
        link = Link()
        link.setvalue(link_dict)

        # 保存到数据库中
        ok = link.save()
        if ok:
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.ADD_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
    except:
        return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
コード例 #20
0
ファイル: CategoryManager.py プロジェクト: vigrep/RLink
def add_category(category_dict, action=ActionCode.ADD_CATEGORY):
    try:
        # 判断类别信息是否传入
        if category_dict is None or not isinstance(category_dict, dict):
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.REQUEST_PARAM_NOT_FOUND)

        # 将dict中封装的类别信息,更新填充到新建的category对象中
        category = Category()
        category.setvalue(category_dict)

        # 保存到数据库中
        ok = category.save()
        if ok:
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.ADD_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
    except:
        return ActionResult(action, StatusCode.FAILED, MsgCode.ADD_FAILED)
コード例 #21
0
def get_link_by_id(link_id, action=ActionCode.GET_LINK_BY_ID):
    if link_id is None:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

    try:
        link_id = int(link_id)
        link = Link.query.filter_by(id=link_id).first()
        if link is not None:
            data = list()
            data.append(link.json())

            result = DictData()
            result.add("total_record", 1)
            result.add("data", data)
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.LINK_NOT_EXIST)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.LINK_NOT_EXIST)
コード例 #22
0
ファイル: UserManager.py プロジェクト: vigrep/RLink
def get_user_by_id(user_id, action=ActionCode.GET_USER_BY_ID):
    if user_id is None:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

    try:
        user_id = int(user_id)
        user = User.query.filter_by(id=user_id).first()
        if user is not None:
            data = list()
            data.append(user.json())

            result = DictData()
            result.add("total_record", 1)
            result.add("data", data)
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.USER_NOT_EXIST)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.USER_NOT_EXIST)
コード例 #23
0
ファイル: business.py プロジェクト: vigrep/RLink
def get_worthy_link(page, page_size, action=ActionCode.GET_WORTHY_LINK):
    try:
        paginate = WorthyLink.query.order_by(WorthyLink.add_datetime.desc()).paginate(int(page), int(page_size), False)
        total_count = paginate.total
        worthy_links = paginate.items
        links_list = list()
        for worthy in worthy_links:
            links_list.append(worthy.get_link().json())

        result = DictData()
        result.add("total_record", total_count)
        result.add("total_pages", paginate.pages)
        result.add("current_page", paginate.page)
        result.add("current_page_size", paginate.per_page)
        result.add("has_prev", paginate.has_prev)
        result.add("has_next", paginate.has_next)
        result.add("data", links_list)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #24
0
def del_link_by_id(link_id, action=ActionCode.DELETE_LINK):
    if link_id is None:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_NOT_FOUND)

    try:
        link_id = int(link_id)  # 如果传入的值不能转换为int, 返回参数错误
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.REQUEST_PARAM_ERROR)

    try:
        link = Link.query.filter_by(id=link_id).first()
        if link is not None:
            db.session.delete(link)
            db.session.commit()
            return ActionResult(action, StatusCode.SUCCESS, MsgCode.DELETE_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED, MsgCode.LINK_NOT_EXIST)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.DELETE_FAILED)
コード例 #25
0
ファイル: RoleManager.py プロジェクト: vigrep/RLink
def update_role(role_dict, action=ActionCode.UPDATE_ROLE):
    try:
        # 判断角色信息是否传入
        if role_dict is None or not isinstance(role_dict, dict):
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.REQUEST_PARAM_NOT_FOUND)
        try:
            role_id = int(role_dict["id"])
        except:
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.REQUEST_PARAM_ERROR)

        # 判断role_id 对应的用户是否存在数据库中
        db_role = Role.query.filter_by(id=role_id).first()
        if db_role is None:
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.USER_NOT_EXIST)

        # role_dict为字典类型(key必须对应User表中的字段名)
        ok = db_role.update(role_dict)
        if ok:
            return ActionResult(action, StatusCode.SUCCESS,
                                MsgCode.UPDATE_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.UPDATE_FAILED)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.UPDATE_FAILED)
コード例 #26
0
ファイル: CategoryManager.py プロジェクト: vigrep/RLink
def update_category(category_dict, action=ActionCode.UPDATE_CATEGORY):
    # category_dict为字典类型(key必须对应Category表中的字段名)
    try:
        if category_dict is None or not isinstance(category_dict, dict):
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.REQUEST_PARAM_NOT_FOUND)

        try:
            category_id = int(category_dict["id"])
        except ValueError:
            traceback.print_exc()
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.REQUEST_PARAM_ERROR)

        # 判断category_id 对应的类别是否存在数据库中
        db_category = Category.query.filter_by(id=category_id).first()
        if db_category is None:
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.CATEGORY_NOT_EXIST)

        # 使用Category自身的update方法修改并提交到数据库, category_dict为字典类型(key必须对应Category表中的字段名)
        ok = db_category.update(category_dict)
        if ok:
            return ActionResult(action, StatusCode.SUCCESS,
                                MsgCode.UPDATE_SUCC)
        else:
            return ActionResult(action, StatusCode.FAILED,
                                MsgCode.UPDATE_FAILED)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.UPDATE_FAILED)
コード例 #27
0
def register_user(username, email, password, action=ActionCode.REGISTER_USER):
    # 判断注册信息是否传入
    if username is None or username == "":
        return ActionResult(action, StatusCode.FAILED, MsgCode.EMAIL_IS_NULL)
    if email is None or email == "":
        return ActionResult(action, StatusCode.FAILED, MsgCode.EMAIL_IS_NULL)
    if password is None or password == "":
        return ActionResult(action, StatusCode.FAILED,
                            MsgCode.USER_PASSWORD_IS_NULL)

    # 用户名合法
    if not check_user_name_valid(username):
        return ActionResult(action, StatusCode.FAILED,
                            MsgCode.USER_NAME_INVALID)
    # 用户名不能重复
    if check_user_name_duplicate(username):
        return ActionResult(action, StatusCode.FAILED,
                            MsgCode.USER_NAME_DUPLICATE)
    # 邮箱合法
    if not check_user_email_valid(email):
        return ActionResult(action, StatusCode.FAILED,
                            MsgCode.EMAIL_IS_INVALID)
    # 邮箱已注册
    if check_user_email_duplicate(email):
        return ActionResult(action, StatusCode.FAILED, MsgCode.EMAIL_DUPLICATE)

    user = User()
    user.name = username
    user.email = email
    user.set_password(password)

    # 保存到数据库中
    ok = user.save()

    if ok:
        # 发送邮箱账户确认邮件
        send_account_confirm_email(user)

        # 静默登录用户, 方便用户从邮箱中点击确认链接时,不用重新登录,即可认证成功, 因为为了确保安全,认证视图函数要求登录权限才能操作
        login_user(user)

        return ActionResult(action, StatusCode.SUCCESS, MsgCode.REGISTER_SUCC)
    else:
        return ActionResult(action, StatusCode.FAILED, MsgCode.REGISTER_FAILED)
コード例 #28
0
def get_links_by_page(page, page_size, conditions_dict, action=ActionCode.GET_LINKS_BY_PAGE):
    try:
        query = add_conditions(Link, conditions_dict)
        paginate = query.order_by(Link.update_datetime.desc()).paginate(int(page), int(page_size), False)
        total_count = paginate.total
        links = paginate.items
        links_list = list()
        for link in links:
            links_list.append(link.json())

        result = DictData()
        result.add("total_record", total_count)
        result.add("total_pages", paginate.pages)
        result.add("current_page", paginate.page)
        result.add("current_page_size", paginate.per_page)
        result.add("has_prev", paginate.has_prev)
        result.add("has_next", paginate.has_next)
        result.add("data", links_list)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #29
0
ファイル: UserManager.py プロジェクト: vigrep/RLink
def get_users_by_page(page, page_size, conditions_dict, action=ActionCode.GET_USERS_BY_PAGE):
    try:
        query = add_conditions(User, conditions_dict)
        paginate = query.order_by(User.register_datetime.desc()).paginate(int(page), int(page_size), False)

        total_count = paginate.total
        users = paginate.items
        user_list = list()
        for user in users:
            user_list.append(user.json())

        result = DictData()
        result.add("total_record", total_count)
        result.add("total_pages", paginate.pages)
        result.add("current_page", paginate.page)
        result.add("current_page_size", paginate.per_page)
        result.add("has_prev", paginate.has_prev)
        result.add("has_next", paginate.has_next)
        result.add("data", user_list)
        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, result)
    except:
        traceback.print_exc()
        return ActionResult(action, StatusCode.FAILED, MsgCode.QUERY_FAILED)
コード例 #30
0
ファイル: business.py プロジェクト: vigrep/RLink
def get_links_by_name(user_name, action=ActionCode.GET_LINK_BY_ID):
    action_result = get_user_model_by_name(user_name)

    if action_result.success():
        user_db = action_result.data

        users = user_db.links.all()
        user_list = list()
        for user in users:
            user_list.append(user.json())

        data = DictData()
        data.add("total_record", user_db.links.count())
        data.add("data", user_list)

        return ActionResult(action, StatusCode.SUCCESS, MsgCode.QUERY_SUCC, data)
    else:
        return action_result