class UserMixin: user_shape = api.model( "user_shape", { "id": fields.String(description="This user's public ID", example="1226637d-6d9a-4d5b-a7c6-9b1d5bba98f8", attribute="public_id", required=True), "name": fields.String(description="This user's name", example="metamarcdw", required=True), "password_hash": fields.String(description="This user's hashed password", example="pbkdf2:sha256:50000$Dm5rUTw7$...", required=True), "admin": fields.Boolean(description="This user's admin status", example="false", required=True) }) new_user_shape = api.model( "new_user_shape", { "name": fields.String(min_length=1, max_length=30, required=True), "password": fields.String(min_length=1, required=True) }) @staticmethod def abort_if_not_admin(current_user=None): if not current_user: current_user = get_jwt_identity() if not current_user["admin"]: api.abort(403, "Must be admin")
class TodoMixin: todo_shape = api.model( "todo_shape", { "id": fields.Integer(description="A unique identifier for todos", example="5", required=True), "text": fields.String(description="Some text describing your task", example="Do a thing.", required=True), "complete": fields.Boolean(description="This todo's completion status", example="true", required=True) }) new_todo_shape = api.model( "new_todo_shape", {"text": fields.String(min_length=1, max_length=30, required=True)})
def build_response(name, data): return api.response( code=to_http_status(APIStatus.Ok), model=api.model( name, { 'status': fields.Integer(description='返回状态码'), 'msg': fields.String(description='返回状态信息'), 'data': fields.Nested(model=data, description='返回的数据') }), description='返回内容')
def ResponseBody(self, data, model_name, response_model="model", response_code="200", response_data="成功", response_templates=None, response_fileds=False, function=None): """返回整个BODY :params data : response data :params response_model: model | response :return : response data model """ models = {} for _key in data: if isinstance(data[_key], dict): _fields = fields.Nested( model=api.model(_key, self.NestedList(data[_key]))) elif isinstance(data[_key], list): _fields = fields.List( fields.Nested( model=api.model(_key, self.NestedList(data[_key])))) else: _fields = self.__swich_fields_keys[ data[_key].__class__.__name__](data[_key], Description=data[_key]) models[_key] = _fields if response_fileds: return models if response_model == "response": return api.response(response_code, response_data, model=api.model(model_name, models)) # if function: # api.doc(body=api.model(model_name, models))(function) return api.doc(body=api.model(model_name, models))
class LoginResource(Resource): token_shape = api.model("token_shape", { "token": fields.String( description="A JWT associated with the current user's session", example="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", required=True) }) @api.marshal_with(token_shape) @api.doc(security={"basic": authorizations["basic"]}, responses={401: "Login failed"}) def get(self): auth = request.authorization if not auth or not all(k in auth for k in ("username", "password")): api.abort(401, "Login attempt failed") name, password = auth["username"], auth["password"] user = User.query.filter_by(name=name).first() if not user or not check_password_hash(user.password_hash, password): api.abort(401, "Login attempt failed") identity = {"name": user.name, "admin": user.admin} expiry = datetime.timedelta(minutes=30) return {"token": create_access_token(identity, expires_delta=expiry)}
from server.services import user_service LOG = logging.getLogger(__name__) # Only doing this as we're not using a database # this is NOT recommended user_data = user_service.UserService() user_namespace = Namespace('user', description='Interface for User Resource') api.add_namespace(user_namespace) user_fields = api.model('User', { 'name': fields.String }) @user_namespace.route("") class User(Resource): @prometheus.track_requests @api.param('id', description='user id', type='integer') def get(self): if not request.args.get('id'): response = user_data.get_users() else: try: response = user_data.get_user_by_id( int(request.args.get('id')))
from flask import request from flask_restx import fields import copy from deepdiff import DeepHash from server import api success_output = api.model('SuccessOutput', {'success': fields.String()}) # ----------------------------------------------------------------------------- # Status Helpers -------------------------------------------------------------- # ----------------------------------------------------------------------------- WITNESS_FIELD = 'witness' SIGNATURE_FIELD = 'signature' STATUS_FIELD = 'status' STATUS_TODO = 'todo' STATUS_SIGNED = 'signed' STATUS_WITNESSED = 'witnessed' def status_order(status): if status == STATUS_TODO: return 0 if status == STATUS_SIGNED: return 1 if status == STATUS_WITNESSED: return 2 return -1
# coding=utf-8 # author=whitefirer from server import api from server.status import APIStatus, AdminAPIStatus from flask_restplus import fields NodeModel = api.model( 'node_model', { 'hb_id': fields.String(description='红包ID', required=True), 'data_type': fields.String(description='节点数据类型', required=True), 'node_data': fields.String(description='节点数据', required=True), 'click_time': fields.Float(description='点击时间', required=True), }) response_hb_success = api.response( 200, '成功', api.model( 'response_hb_success', { 'state': fields.Integer(description=str(APIStatus.Ok)), 'msg': fields.String( description=AdminAPIStatus.Decriptions[APIStatus.Ok]), 'data': fields.Nested(model=NodeModel, description='数据') }))
# -*- coding: utf-8 -*- from server import api from flask_restplus import fields request_root_management_get = api.doc(params={ 'page': '页数', 'limit': '条数', }) request_root_management_add = api.doc(body=api.model( 'request_root_management_add', { 'mobile': fields.String(description='手机号'), 'comment': fields.String(description='用户备注'), 'user_name': fields.String(description='用户名'), 'password': fields.String(description='密码'), 'role_id': fields.List(fields.Integer, description='角色id列表'), })) request_root_put = api.doc(body=api.model( 'request_root_put', { 'mobile': fields.String(description='手机号'), 'comment': fields.String(description='用户备注'), 'user_name': fields.String(description='用户名'), 'password': fields.String(description='密码'), 'role_id': fields.List(fields.Integer, description='角色id列表'), 'is_active': fields.Integer(description='是否启用:1.启用;2.禁用'), })) request_root_role_management_add = api.doc(body=api.model( 'request_root_role_management_add', {
'register_start_time': '注册期开始时间,默认:空', 'register_end_time': '注册日期结束时间,默认:空', 'statistic_start_time': '注册期开始时间,默认:空', 'statistic_end_time': '注册日期结束时间,默认:空', 'region_id': '用户自选地区id', 'page': '页数', 'limit': '条数' }, description='推广统计列表查询参数') response_promote_effect_param_success = response_success = api.response( 200, '成功', api.model( 'response_success', { 'state': fields.Integer(description=str(APIStatus.Ok)), 'msg': fields.String(description=FeedAPIStatus.Decriptions[APIStatus.Ok]), })) request_promote_effect_add_param = api.doc( body=api.model('request_promote_effect_add', { 'mobile': fields.String(description='手机号'), }, description='推广统计列表新增推广人员参数')) response_promote_effect_add_param_success = api.response( 200, '成功', api.model( 'response_success', { 'state':
"delivery_start_time": "开始发货时间", "delivery_end_time": "结束发货时间", "register_start_time": "开始注册时间", "register_end_time": "结束注册时间", }, description='货源热力图查询参数') goods_map_param_post = api.doc(body=api.model( 'goods_map_param_post', { 'lat': fields.Float(description='纬度'), 'lng': fields.Float(description='经度'), 'region_id': fields.Integer(description='地区id'), 'multiple': fields.Float(description='范围倍数'), "goods_price_type": fields.Integer(description="0.全部;1.一口价;2.议价;"), "haul_dist": fields.Integer(description="0.全部;1.同城;2.跨城;"), "vehicle_length": fields.String(description="空字符串:全部;常用车型:4.2米,5.2米等"), "goods_status": fields.Integer( description="0.全部;1.待接单;2.已接单;3.已完成;4.已取消"), "special_tag": fields.Integer(description="0.全部;1.新用户"), "delivery_start_time": fields.Integer(description="开始发货时间"), "delivery_end_time": fields.Integer(description="结束发货时间"), "register_start_time": fields.Integer(description="开始注册时间"), "register_end_time": fields.Integer(description="结束注册时间"), })) users_map_param = api.doc(params={ "users_type": "0.全部;1.货主;2.司机;3.公司", "is_auth": "0.全部;1.认证;2.未认证;", "active_level":
# coding=utf-8 # author=whitefirer from flask_restplus import fields from server.status import APIStatus, AdminAPIStatus from server import api request_token = api.header('token', type=str, description='登录令牌', required=True) response_success = api.response(200, '成功', api.model('response_success', { 'state': fields.Integer(description=str(APIStatus.Ok)), 'msg': fields.String(description=AdminAPIStatus.Decriptions[APIStatus.Ok]), })) response_bad_request = api.response(400, '请求参数错误', api.model('response_bad_request', { 'state': fields.Integer(description=str(APIStatus.BadRequest)), 'msg': fields.String(description=AdminAPIStatus.Decriptions[APIStatus.BadRequest]), })) response_unauthorized = api.response(401, '验证失败', api.model('response_unauthorized', { 'state': fields.Integer(description=str(APIStatus.UnLogin)), 'msg': fields.String(description=AdminAPIStatus.Decriptions[APIStatus.UnLogin]), })) response_forbidden = api.response(403, '服务器拒绝该请求', api.model('response_response_forbidden', { 'state': fields.Integer(description=str(APIStatus.Forbidden)), 'msg': fields.String(description=AdminAPIStatus.Decriptions[APIStatus.Forbidden]), }))
from flask_restplus import fields from server import api request_business_msg_list_get = api.doc(params={ 'page': '页数', 'limit': '条数', }) request_business_msg_post = api.doc(body=api.model( 'request_business_msg_post', { 'follow_name': fields.String(description='跟进人的名字'), 'follow_result': fields.String(description='谈成或者没谈成的结果'), }))
# coding=utf-8 # author=whitefirer from server import api from server.status import APIStatus, AdminAPIStatus from flask_restplus import fields EmailModel = api.model( 'email_model', { 'hb_id': fields.String(description='红包ID', required=True), 'data_type': fields.String(description='节点数据类型', required=True), 'email_data': fields.String(description='节点数据', required=True) }) response_email_success = api.response( 200, '成功', api.model( 'response_email_success', { 'state': fields.Integer(description=str(APIStatus.Ok)), 'msg': fields.String( description=AdminAPIStatus.Decriptions[APIStatus.Ok]), 'data': fields.Nested(model=EmailModel, description='数据') }))
# -*- coding: utf-8 -*- from server import api from flask_restplus import fields request_system_message_list_get = api.doc(params={ 'page': '页数', 'limit': '条数', }) request_system_message_post = api.doc(body=api.model('request_system_message_post', { 'title': fields.String(description='消息标题'), 'content': fields.String(description='消息内容'), 'msg_type': fields.Integer(description='消息类型: 1.手动发布, 2自动发布'), 'push_role': fields.Integer(description='推送角色: 0.全部,1.后台用户,2.区镇合伙人,3.网点管理员,4.城市经理') })) request_system_message_put = api.doc(body=api.model('request_system_message_put', { 'title': fields.String(description='消息标题'), 'content': fields.String(description='消息内容'), 'msg_type': fields.Integer(description='消息类型: 1.手动发布, 2自动发布'), 'push_role': fields.Integer(description='推送角色: 0.全部,1.后台用户,2.区镇合伙人,3.网点管理员,4.城市经理') })) request_user_message_list_get = api.doc(params={ 'user_name': '用户名', 'page': '页数', 'limit': '条数', }) request_user_message_read_put = api.doc(body=api.model('request_user_message_read_post', {
from flask_restplus import fields from server.status import APIStatus, FeedAPIStatus from server import api response_success = api.response( 200, '成功', api.model( 'response_success', { 'state': fields.Integer(description=str(APIStatus.Ok)), 'msg': fields.String(description=FeedAPIStatus.Decriptions[APIStatus.Ok]), })) request_order_received_statistics_param = api.doc(params={ 'start_time': '开始日期(时间戳),默认:8天前', 'end_time': '结束日期(时间戳),默认:昨天', 'periods': '时间周期,2:日,3:周,4:月,默认:2', 'goods_type': '货源类型,1:跨城,2:同城,默认:0全部', 'goods_price_type': '货源类型,1:议价,2:一口价,默认:0全部', 'dimension': '维度,1:按数量,2:按金额,默认:1', 'region_id': '地区id,默认:0全部', 'comment_type': '评价:1:好评,2:中评,3:差评,默认:0全部',
#!/usr/bin/python # -*- coding:utf-8 -*- # Copyright (c) 2016 yu.liu <*****@*****.**> # All rights reserved from flask_restplus import fields from server.status import APIStatus, FeedAPIStatus from server import api request_user_login = api.doc( body=api.model('request_user_login', { 'user_name': fields.String(description='用户名'), 'password': fields.String(description='密码'), 'role': fields.Integer(description='角色:1管理员,4城市经理') }, description='用户登录请求参数')) response_user_login_success = response_success = api.response( 200, '成功', api.model( 'response_success', { 'state': fields.Integer(description=str(APIStatus.Ok)), 'msg': fields.String(description=FeedAPIStatus.Decriptions[APIStatus.Ok]), }))