def author_create():
    schema = AuthorSchema()
    input_data = request.get_json() or {}
    data, errs = schema.load(input_data)
    if errs:
        return J(errs), 422
    id_ = len(db['authors'])
    author = Author(id=id_, **data)
    db['authors'].append(author)
    result = schema.dump(author)
    return J(result.data)
예제 #2
0
def echo_nested():
    args = {
        'name': fields.Nested({
            'first': fields.Str(),
            'last': fields.Str()
        })
    }
    return J(parser.parse(args))
예제 #3
0
def handle_error(err):
    if err.code == 422:
        assert isinstance(err.data["schema"], ma.Schema)

    if MARSHMALLOW_VERSION_INFO[0] >= 3:
        return J(err.data["messages"]), err.code

    # on marshmallow2, validation errors for nested schemas can fail to encode:
    # https://github.com/marshmallow-code/marshmallow/issues/493
    # to workaround this, convert integer keys to strings
    def tweak_data(value):
        if not isinstance(value, dict):
            return value
        return {str(k): v for k, v in value.items()}

    return J({k: tweak_data(v)
              for k, v in err.data["messages"].items()}), err.code
예제 #4
0
def echo_nested():
    args = {
        "name": fields.Nested({
            "first": fields.Str(),
            "last": fields.Str()
        })
    }
    return J(parser.parse(args))
예제 #5
0
def echo_nested_many():
    args = {
        'users':
        fields.Nested({
            'id': fields.Int(),
            'name': fields.Str()
        }, many=True)
    }
    return J(parser.parse(args))
예제 #6
0
def echo_nested_many():
    args = {
        "users":
        fields.Nested({
            "id": fields.Int(),
            "name": fields.Str()
        }, many=True)
    }
    return J(parser.parse(args))
예제 #7
0
def echo_nested_many_with_data_key():
    data_key_kwarg = {
        "load_from" if (MARSHMALLOW_VERSION_INFO[0] < 3) else "data_key":
        "X-Field"
    }
    args = {
        "x_field": fields.Nested({"id": fields.Int()},
                                 many=True,
                                 **data_key_kwarg)
    }
    return J(parser.parse(args))
예제 #8
0
def echo_nested_many_with_data_key():
    data_key_kwarg = {
        'load_from' if (MARSHMALLOW_VERSION_INFO[0] < 3) else 'data_key':
        'X-Field'
    }
    args = {
        'x_field': fields.Nested({'id': fields.Int()},
                                 many=True,
                                 **data_key_kwarg)
    }
    return J(parser.parse(args))
예제 #9
0
def multi_json():
    return J(parser.parse(hello_multiple))
예제 #10
0
def multi():
    return J(parser.parse(hello_multiple, location="query"))
예제 #11
0
def multi_form():
    return J(parser.parse(hello_multiple, location="form"))
예제 #12
0
 def post(self, args):
     return J(args)
예제 #13
0
def echo_use_kwargs(name):
    return J({"name": name})
예제 #14
0
def posts_comments(post_id):
    post = db['posts'][post_id - 1]
    comments = post.comments
    data, errs = CommentSchema(many=True).dump(comments)
    return J(data)
예제 #15
0
def author_detail(author_id):
    author = db['authors'][author_id - 1]
    data, errs = AuthorSchema().dump(author)
    return J(data)
예제 #16
0
def echo_view_arg(view_arg):
    return J(parser.parse({"view_arg": fields.Int()}, location="view_args"))
예제 #17
0
def echo_json_or_form():
    return J(parser.parse(hello_args, location="json_or_form"))
예제 #18
0
def echo():
    return J(parser.parse(hello_args, location="query"))
예제 #19
0
def echo_form():
    return J(parser.parse(hello_args, location="form"))
예제 #20
0
def handle_error(err):
    if err.code == 422:
        assert isinstance(err.data["schema"], ma.Schema)
    return J(err.data["messages"]), err.code
예제 #21
0
def echo_use_kwargs_missing(username, **kwargs):
    assert "password" not in kwargs
    return J({"username": username})
예제 #22
0
 def post(self, val):
     return J({"val": val})
예제 #23
0
def posts_list():
    posts = db['posts']
    data, errs = PostSchema(many=True).dump(posts)
    return J(data)
예제 #24
0
def echo_use_args(args):
    return J(args)
예제 #25
0
def posts_detail(post_id):
    post = db['posts'][post_id - 1]
    data, errs = PostSchema().dump(post)
    return J(data)
예제 #26
0
def echo_use_args_validated(args):
    return J(args)
예제 #27
0
def authors_list():
    author = db['authors']
    data, errs = AuthorSchema(many=True).dump(author)
    return J(data)
예제 #28
0
def echo_json_ignore_extra_data():
    return J(parser.parse(hello_exclude_schema))
예제 #29
0
def echo_json():
    return J(parser.parse(hello_args))
예제 #30
0
def echo_view_arg_with_use_args(args, **kwargs):
    return J(args)