def get(self, id=None): user = get_current_user() if id == 'me': return util.api_response(data=self.me(user)) elif id is not None: return util.api_response(data=User.get_by_id(id)) else: if user.is_admin: parser.add_argument('page_size', type=int, default=10) parser.add_argument('page', type=int, default=1) parser.add_argument('order_by', type=str, default='-added') args = parser.parse_args() page_size = args.get('page_size') page = args.get('page') order_by = [args.get('order_by')] query = {} result = util.paging( cls=User, page=page, query=query, page_size=page_size, order_by=order_by ) return util.api_response(data=result) else: return util.api_response( data={'msg': 'Don\'t have authority'}, status_code=403 )
def get(self, id=None): """ @api {get} /article/:id 获取原生文章列表 @apiName articlelist @apiGroup articlelist @apiDescription 查询未编辑的文章列表 @apiVersion 1.0.0 @apiParam {Integer} [page_size] 每页条数 @apiParam {Integer} [page] 页数 """ if id: articles = Article.get_by_id(id=id) return util.api_response(data=articles.api_response()) else: parser.add_argument('page_size', type=int, default=20) parser.add_argument('page', type=int, default=1) parser.add_argument('order_by', type=str, default='-added') args = parser.parse_args() page_size = args.get('page_size') page = args.get('page') order_by = [args.get('order_by')] query = {} result = util.paging( cls=Article, page=page, query=query, page_size=page_size, order_by=order_by ) return util.api_response(data=result)
def handle_error(self, e): if isinstance(e, HTTPException): return super(Process, self).handle_error(e) elif isinstance(e, JWTError): data = {'msg': str(e.description)} return self.make_response(*util.api_response(data, e.status_code)) else: traceback.print_exc() data = {'msg': str(e)} return self.make_response(*util.api_response(data, 500))
def post(self): """ @api {get} /article 新增文章 @apiName articlelist @apiGroup articlelist @apiDescription 保存文章到article数据库 @apiVersion 1.0.0 @apiParamExample {json} Request-Example: { "title":"hhhhh", "url":"fdsafdsf.net" } @apiParam {Integer} [page_size] 每页条数 @apiParam {Integer} [page] 页数 """ data = request.get_json(force=True) data['added'] = datetime.datetime.now() if data.get('author'): user = User.get_by_id(data.get('author')) data['author'] = user else: data['author'] = get_current_user() articles = Article(**data).save() articles.author.save() if articles: return util.api_response(articles.api_response()) else: raise ValueError('save failure')
def put(self, id=None): """ @api {put} /v1/user 修改用户 @apiName user @apiGroup user @apiDescription 修改用户,用户名不能修改 @apiVersion 1.0.0 @apiParamExample {json} Request-Example: { "username":"******", "password":"******", "email":"*****@*****.**" } @apiErrorExample {json} Error-Response: HTTP/1.1 500 ERROR { "msg": "File not found" } """ if id is None: raise ValueError('id not found') data = request.get_json() current_user = get_current_user() user = User.objects.get(id=id) if 'username' in data and user.username != data['username']: return util.api_response( data={'msg': 'Can\'t modify username'}, status_code=403 ) if str(current_user.id) == str(user.id): if 'level' in data: del data['level'] else: if not current_user.is_admin: return util.api_response( data={'msg': 'Don\'t have authority'}, status_code=403 ) if 'password' in data: data['password'] = util.md5(data['password']) user.update(**data) user.reload() return util.api_response(data=self.me(user))
def post(self): """ @api {post} /v1/user 添加用户 @apiName user @apiGroup user @apiDescription 添加用户 @apiVersion 1.0.0 @apiParamExample {json} Request-Example: { "username":"******", "password":"******", "email":"*****@*****.**", "level": [2,9] } @apiErrorExample {json} Error-Response: HTTP/1.1 500 ERROR { "msg": "File not found" } """ data = request.get_json() username = data['username'].strip().lower() password = data['password'].strip() email = data['email'] level = data['level'] if not (username and password and email): raise ValueError('请把所有数据填写完整。') if User.get_by_username(username): raise ValueError('该用户已存在') user = User( username=username, password=util.md5(password), email=email, level=level, ) user.save() return util.api_response(data=self.me(user))
def put(self, id=None): """ @api {put} /v1/user 修改article @apiName user @apiGroup user @apiDescription 修改article @apiVersion 1.0.0 @apiParamExample {json} Request-Example: { "title":"hhhhh", "url":"fdsafdsf.net" } @apiErrorExample {json} Error-Response: HTTP/1.1 500 ERROR { "msg": "File not found" } """ if id is None: raise ValueError('id not found') data = request.get_json(force=True) print(data) articles = Article.objects.get(id=id) if data.get('author'): user = User.get_by_id(data.get('author')) data['author'] = user else: data['author'] = get_current_user() if articles: articles.update(**data) articles.reload() return util.api_response(data=articles.api_response()) else: raise ValueError('save failure')
def delete(self, id=None): if id is None: raise ValueError('id not found') user = User.get_by_id(id) user.delete() return util.api_response(data={'msg': 'SUCCESS'})
def auth_response_handler(access_token, identity): data = {'access_token': access_token.decode('utf-8')} return rest_api.make_response(*util.api_response(data=data))