class FilterObjectSchema(BaseSchema): """ A single filter object, e.g. { 'type': 'daterange', 'value': [], 'cmp': 'in' } """ type = f.String(validate=validate.OneOf( ["date", "daterange", "timedelta", "reportmeta", "samplemeta"])) value = f.Raw() key = f.Raw() cmp = f.String(validate=validate.OneOf( ["eq", "ne", "le", "lt", "ge", "gt", "in", "not in"]))
class PostsSchema(Schema): not_blank = validate.Length(min=1, error='Field cannot be blank') # add validate=not_blank in required fields id = fields.Integer(dump_only=True) author = fields.String(validate=not_blank) title = fields.String(validate=not_blank) slug = fields.String(validate=not_blank) content = fields.String(validate=not_blank) date = fields.String(dump_only=True) modified = fields.String(dump_only=True) excerpt = fields.String(validate=not_blank) status = fields.String(validate=not_blank) type = fields.String(validate=not_blank) path = fields.String() parent = fields.Integer(required=True) #terms = fields.Nested(TermsSchema, many=True) #term_ids = fields.List(fields.Integer()) term_ids = fields.Raw() # self links def get_top_level_links(self, data, many): if many: self_link = "/posts/" else: self_link = "/posts/{}".format(data['id']) return {'self': self_link} class Meta: type_ = 'posts'
class FilterObjectSchema(BaseSchema): """ A single filter object, e.g. { 'type': 'daterange', 'value': [], 'cmp': 'in' } """ type = f.String(validate=validate.OneOf( ['date', 'daterange', 'timedelta', 'reportmeta', 'samplemeta'])) value = f.Raw() key = f.Raw() cmp = f.String(validate=validate.OneOf( ['eq', 'ne', 'le', 'lt', 'ge', 'gt', 'in', 'not in']))
class PlotSchema(JsonApiSchema): """ Data that can be used to generate a plot. """ class Meta: type_ = "plots" unknown = INCLUDE id = f.String(dump_only=True) type = f.String() x = f.List(f.Raw()) y = f.List(f.Raw()) text = f.List(f.Raw()) hoverinfo = f.Str() line = f.Dict() mode = f.String() name = f.String() fill = f.String() fillcolor = f.String() showlegend = f.Bool()
class SubstanceSearchResultSchema(Schema): id = fields.Str(required=True) identifiers = fields.Raw(required=True) # the matches will be the fields in which the identifier was found matches = fields.Function(lambda obj: obj.get_matches( getInchikey(request.args.get("identifier")))) score = fields.Function(lambda obj: obj.score_result( getInchikey(request.args.get("identifier")))) class Meta: type_ = "substance_search_results" self_view_many = "resolved_substance_list" model = Substance sqla_session = db.session load_instance = True
class StudentsSchema(Schema): not_blank = validate.Length(min=1, error='Field cannot be blank') id = fields.Integer(dump_only=True) studentname = fields.String(validate=not_blank) degree = fields.String(validate=not_blank) major = fields.String(validate=not_blank) courseids = fields.Raw() def get_top_level_links(self, data, many): if many: self_link = "/students/" else: self_link = "/students/{}".format(data['id']) return {'self': self_link} class Meta: type_ = 'students'
class RecordsRowSchema(PlainSchema): key = fields.String(required=True) value = fields.Raw(required=True)
class GeoJSONSchema(Schema): type = fields.Str() coordinates = fields.Raw()