Esempio n. 1
0
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")
Esempio n. 2
0
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)})
Esempio n. 3
0
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='返回内容')
Esempio n. 4
0
    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)}
Esempio n. 6
0
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')))
Esempio n. 7
0
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
Esempio n. 8
0
# 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='数据')
        }))
Esempio n. 9
0
# -*- 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', {
Esempio n. 10
0
    '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':
Esempio n. 11
0
    "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":
Esempio n. 12
0
# 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]),
}))
Esempio n. 13
0
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='谈成或者没谈成的结果'),
    }))
Esempio n. 14
0
# 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='数据')
        }))
Esempio n. 15
0
# -*- 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', {
Esempio n. 16
0
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全部',
Esempio n. 17
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]),
        }))