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)
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)
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)
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)
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)
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)
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)
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)
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
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()
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)
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()
def get_article(aid): article = Article.query.filter_by(id=aid).first_or_404() return restful_json(article)
def get_submenu_detail(name): submenu = Submenu.query.filter_by(name_en=name).first_or_404() return restful_json(submenu)