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)
def echo_nested(): args = { 'name': fields.Nested({ 'first': fields.Str(), 'last': fields.Str() }) } return J(parser.parse(args))
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
def echo_nested(): args = { "name": fields.Nested({ "first": fields.Str(), "last": fields.Str() }) } return J(parser.parse(args))
def echo_nested_many(): args = { 'users': fields.Nested({ 'id': fields.Int(), 'name': fields.Str() }, many=True) } return J(parser.parse(args))
def echo_nested_many(): args = { "users": fields.Nested({ "id": fields.Int(), "name": fields.Str() }, many=True) } return J(parser.parse(args))
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))
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))
def multi_json(): return J(parser.parse(hello_multiple))
def multi(): return J(parser.parse(hello_multiple, location="query"))
def multi_form(): return J(parser.parse(hello_multiple, location="form"))
def post(self, args): return J(args)
def echo_use_kwargs(name): return J({"name": name})
def posts_comments(post_id): post = db['posts'][post_id - 1] comments = post.comments data, errs = CommentSchema(many=True).dump(comments) return J(data)
def author_detail(author_id): author = db['authors'][author_id - 1] data, errs = AuthorSchema().dump(author) return J(data)
def echo_view_arg(view_arg): return J(parser.parse({"view_arg": fields.Int()}, location="view_args"))
def echo_json_or_form(): return J(parser.parse(hello_args, location="json_or_form"))
def echo(): return J(parser.parse(hello_args, location="query"))
def echo_form(): return J(parser.parse(hello_args, location="form"))
def handle_error(err): if err.code == 422: assert isinstance(err.data["schema"], ma.Schema) return J(err.data["messages"]), err.code
def echo_use_kwargs_missing(username, **kwargs): assert "password" not in kwargs return J({"username": username})
def post(self, val): return J({"val": val})
def posts_list(): posts = db['posts'] data, errs = PostSchema(many=True).dump(posts) return J(data)
def echo_use_args(args): return J(args)
def posts_detail(post_id): post = db['posts'][post_id - 1] data, errs = PostSchema().dump(post) return J(data)
def echo_use_args_validated(args): return J(args)
def authors_list(): author = db['authors'] data, errs = AuthorSchema(many=True).dump(author) return J(data)
def echo_json_ignore_extra_data(): return J(parser.parse(hello_exclude_schema))
def echo_json(): return J(parser.parse(hello_args))
def echo_view_arg_with_use_args(args, **kwargs): return J(args)