Ejemplo n.º 1
0
def publish_article():
    form = UserForm().validate_for_api()
    email = form.email.data
    nickname = form.nickname.data

    user_nickname = User.query.filter_by(nickname=nickname).first()
    user_email = User.query.filter_by(email=email).first()

    if user_nickname:
        data = {"error_code": 101, "msg": "昵称已注册"}
        return jsonify(data)

    if user_email:
        data = {"error_code": 100, "msg": "邮箱已注册"}
        return jsonify(data)

    with db.auto_commit():
        user = User()
        user.nickname = nickname
        user.email = email
        user.auth = form.auth.data
        user.password = form.password.data
        user.create_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
        db.session.add(user)
    return restful_json(user)
Ejemplo n.º 2
0
def article_list():
    page_index = int(request.args.get('page', 1))
    page_size = int(request.args.get('limit', 10))
    menu_id = request.args.get('menu_id', '')
    column_id = request.args.get('column_id', '')
    title = request.args.get('title', None)
    order = int(request.args.get('order', 0))

    articles = Article.query

    if title:
        articles = articles.filter(Article.title.like('%' + title + '%'))

    if menu_id and not column_id:
        menu = Menu.query.filter_by(id=menu_id).first_or_404()
        if menu:
            articles = articles.filter_by(menu_id=menu_id)

    if column_id:
        submenu = Submenu.query.filter_by(id=column_id).first_or_404()
        if submenu:
            articles = articles.filter_by(column_id=column_id)

    if order and order == 1:
        articles = articles.order_by(Article.create_time.asc())
    else:
        articles = articles.order_by(Article.create_time.desc())

    total = articles.count()
    articles = articles.limit(page_size).offset(
        (page_index - 1) * page_size).all()

    data = {"total": total, "data": articles}
    return restful_json(data)
Ejemplo n.º 3
0
def super_get_user_list():
    kw = request.args.get('kw', '')
    auth = request.args.get('auth', '')
    status = request.args.get('status', '')
    page_index = int(request.args.get('page', 1))
    page_size = int(request.args.get('limit', 20))
    order = int(request.args.get('order', 0))

    user = User.query

    if kw:
        user = user.filter(User.nickname.like('%' + kw + '%'))

    if auth:
        user = user.filter_by(auth=auth)

    if status:
        user = user.filter_by(status=status)

    if order and order == 1:
        user = user.order_by(User.create_time.asc())
    else:
        user = user.order_by(User.create_time.desc())

    total = user.count()
    user = user.limit(page_size).offset((page_index - 1) * page_size).all()

    data = {"total": total, "data": user}

    return restful_json(data)
Ejemplo n.º 4
0
def save_submenu():
    form = SubmenuForm().validate_for_api()
    menu = Menu.query.filter_by(id=form.menu_id.data).first_or_404()

    id = form.id.data
    if id:
        with db.auto_commit():
            submenu = Submenu.query.get(id)
            submenu.name_zh = form.name_zh.data
            submenu.name_en = form.name_en.data
            submenu.path = form.path.data
            submenu.pic = form.pic.data
            submenu.menu_id = form.menu_id.data
            submenu.menu_name = menu.menu_name
            submenu.description = form.description.data
            submenu.official_doc = form.official_doc.data
            submenu.status = form.status.data
        return Success()

    with db.auto_commit():
        submenu = Submenu()
        submenu.name_zh = form.name_zh.data
        submenu.name_en = form.name_en.data
        submenu.path = form.path.data
        submenu.pic = form.pic.data
        submenu.menu_id = form.menu_id.data
        submenu.menu_name = menu.menu_name
        submenu.description = form.description.data
        submenu.official_doc = form.official_doc.data
        submenu.status = form.status.data
        submenu.create_time = time.strftime('%Y-%m-%d %H:%M:%S',
                                            time.localtime())
        db.session.add(submenu)

    return restful_json(submenu)
Ejemplo n.º 5
0
def get_submenu():
    page_index = int(request.args.get('page', 1))
    page_size = int(request.args.get('limit', 20))
    menu_id = request.args.get('menu_id', '')
    name = request.args.get('name', '')
    status = request.args.get('status', 1)

    submenus = Submenu.query.order_by(Submenu.id.desc())

    if status == 1:
        submenus = submenus.filter(Submenu.status == 1)

    # or_(User.nickname == form.account.data, User.email == form.account.data)
    if name:
        submenus = submenus.filter(
            or_(Submenu.name_zh.like('%' + name + '%'),
                Submenu.name_en.like('%' + name + '%')))

    if menu_id:
        submenus = submenus.filter(Submenu.menu_id == menu_id)

    total = submenus.count()
    submenus = submenus.limit(page_size).offset(
        (page_index - 1) * page_size).all()
    data = {"total": total, "data": submenus}

    return restful_json(data)
Ejemplo n.º 6
0
def get_token_info():
    """获取令牌信息"""
    form = TokenForm().validate_for_api()
    s = Serializer(current_app.config['SECRET_KEY'])
    try:
        data = s.loads(form.token.data, return_header=True)
    except SignatureExpired:
        raise AuthFailed(msg='token is expired', error_code=1003)
    except BadSignature:
        raise AuthFailed(msg='token is invalid', error_code=1002)

    r = {
        'uid':
        data[0]['uid'],
        'nickname':
        data[0]['nickname'],
        'scope':
        data[0]['scope'],
        'create_at':
        time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(data[1]['iat'])),
        'expire_in':
        datetime.datetime.utcfromtimestamp(
            data[1]['exp']).strftime('%Y-%m-%d %H:%M:%S')
    }
    return restful_json(r)
Ejemplo n.º 7
0
def get_menu_detail():
    id = request.values.get('id', '')
    en_name = request.values.get('en_name', '')

    menu = Menu.query.filter(or_(Menu.id==id, Menu.en_name==en_name)).first_or_404()

    return restful_json(menu)
Ejemplo n.º 8
0
def add_menu():
    form = MenuForm().validate_for_api()
    with db.auto_commit():
        menu = Menu()
        menu.menu_name = form.menu_name.data
        menu.en_name = form.en_name.data
        menu.create_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
        db.session.add(menu)
    return restful_json(menu)
Ejemplo n.º 9
0
def get_token():
    form = ClientForm().validate_for_api()
    promise = {ClientTypeEnum.USER_EMAIL: User.verify}
    identity = promise[form.type.data](form.account.data, form.secret.data)

    expiration = current_app.config['TOKEN_EXPIRATION']
    token = generate_auth_token(identity['uid'], identity['nickname'],
                                form.type.data, identity['scope'], expiration)
    t = {'token': token.decode('ascii')}
    return restful_json(t), 201
Ejemplo n.º 10
0
def login():
    form = LoginForm().validate_for_api()
    user = User.query.filter(
        or_(User.nickname == form.account.data,
            User.email == form.account.data)).first()
    if user and user.check_password(form.secret.data):
        # login_user(user, remember=True)
        # session.permanent = True
        return restful_json(user)
    else:
        return LoginFailed()
Ejemplo n.º 11
0
def get_menu():
    nav = request.values.get('nav', '')
    type = request.values.get('type', '')
    menus = Menu.query

    if type:
        menus = menus.all()
    else:
        menus = menus.filter_by(status=1).all()

    if nav == 'nav':
        for menu in menus:
            for submenu in menu.submenu:
                submenu.hide('pic', 'description', 'official_doc', 'status')
    elif nav and nav != 'nav':
        return ParameterException()

    return restful_json(menus)
Ejemplo n.º 12
0
def publish_article():
    form = ArticleForm().validate_for_api()

    title = form.title.data
    article_title = Article.query.filter_by(title=title).first()

    column_id = form.column_id.data
    column = Submenu.query.filter_by(id=column_id).first()

    user_id = form.user_id.data

    create_time = form.create_time.data

    if article_title:
        data = {"error_code": 100, "msg": "文章标题重复"}
        return restful_json(data)
    else:
        with db.auto_commit():
            article = Article()
            article.title = form.title.data
            article.author = form.author.data
            article.content = form.content.data
            article.column_id = form.column_id.data
            article.column_name = column.name_zh
            article.menu_id = column.menu_id
            article.en_name = column.menu.en_name
            article.menu_name = column.menu.menu_name
            article.recommend = form.recommend.data
            article.status = form.status.data

            if user_id:
                article.user_id = user_id
            else:
                article.user_id = g.user.uid

            if create_time:
                article.create_time = create_time
            else:
                article.create_time = time.strftime('%Y-%m-%d %H:%M:%S',
                                                    time.localtime())

            db.session.add(article)
        return Success()
Ejemplo n.º 13
0
def get_article(aid):
    article = Article.query.filter_by(id=aid).first_or_404()
    return restful_json(article)
Ejemplo n.º 14
0
def get_submenu_detail(name):
    submenu = Submenu.query.filter_by(name_en=name).first_or_404()
    return restful_json(submenu)