class MemberSchema(ma.Schema): class Meta: fields = ('id', 'first_name', 'last_name', 'email', 'password', 'leagues', 'member_activity_week') leagues = ma.List(ma.Nested(MemberLeagueSchema)) member_activity_week = ma.List(ma.Nested(MemberActivityWeekSchema))
class LeagueSchema(ma.Schema): class Meta: fields = ('id', 'name', 'type', 'members', 'seasons', 'activities') activities = ma.List(ma.Nested(ActivitySchema)) seasons = ma.List(ma.Nested(SeasonSchema)) members = ma.List(ma.Nested(MemberLeagueSchema))
class CrossProductSchema(ma.ModelSchema): class Meta: model = CrossProduct result = ma.List(ma.Number()) vector1 = ma.List(ma.Number()) vector2 = ma.List(ma.Number())
class SearchSchema(ma.Schema): class FilterSchema(ma.Schema): field = fields.Str() value = fields.Raw() @post_load def make_filter(self, data): return Filter(**data) class FacetSchema(ma.Schema): class FacetCountSchema(ma.Schema): category = fields.Str() hit_count = fields.Integer() is_selected = fields.Boolean() field = fields.Str() facetCounts = ma.List(ma.Nested(FacetCountSchema)) query = fields.Str() start = fields.Integer() size = fields.Integer() sort = fields.Str() filters = ma.List(ma.Nested(FilterSchema)) total = fields.Integer(dump_only=True) resources = fields.List(fields.Dict(), dump_only=True) facets = ma.List(ma.Nested(FacetSchema), dump_only=True) ordered = True @post_load def make_search(self, data): return Search(**data)
class LivroSchema(ma.Schema): autores = ma.List(ma.Nested(AutorSchema)) reservas = ma.List(ma.Nested(ReservaSchema)) class Meta: model = Livro fields = ('id', 'isbn', 'titulo', 'editora', 'quantidade', 'autores', 'reservas')
class CompanySchema(ma.Schema): company_name = ma.Str() company_url = ma.Str() company_street_address = ma.Str() country = ma.Str() company_description = ma.Str() categories = ma.List(ma.Str(), attribute="category") businesses = ma.List(ma.Str(), attribute="business") company_phone_number = ma.Str() company_website = ma.Str() company_email = ma.Str() contacts = ma.List(ma.Str())
class UserSchema(ma.ModelSchema, BaseSchema): roles = ma.List(ma.Nested(UserRoleSchema(only=('role', )))) class Meta: model = User fields = ('id', 'first_name', 'last_name', 'email', 'phone', 'addresses', 'roles', 'image', 'created_at', 'updated_at')
class CreateUserSchema(ma.Schema): username = LowerCased(required=True, validate=Length(max=30)) email = ma.Str(required=True, validate=Length(max=120)) first_name = ma.Str(required=True, validate=Length(max=30)) last_name = ma.Str(required=True, validate=Length(max=30)) password = ma.Str(required=True, validate=Length(min=8)) active = ma.Str(missing=True) roles = ma.List(ma.Str(validate=Length(max=30)), missing=['user']) @validates('email') def is_valid_email(self, value): regex = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$' if not re.search(regex, value): raise ValidationError("Email must be in valid format!") @validates('password') def is_valid_password(self, value): ''' Should have at least one number. Should have at least one uppercase and one lowercase character. Should have at least one special symbol. Should be at least 8 characters long. ''' regex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{8,}$' pat = re.compile(regex) mat = re.search(pat, value) if not mat: raise ValidationError("Password invalid!") class Meta: model = User
class CreateBookSchema(ma.Schema): title = ma.Str(required=True, validate=Length(max=30)) description = ma.Str(required=True, validate=Length(max=120)) authors = ma.List(ma.Integer, required=True) class Meta: model = Book
class UsuarioSchema(ma.Schema): reservas = ma.List(ma.Nested(ReservaSchema)) class Meta: model = Usuario fields = ('id', 'admin', 'username', 'nome', 'email', 'telefone', 'data_criacao', 'reservas')
class FacetSchema(ma.Schema): class FacetCountSchema(ma.Schema): category = fields.Str() hit_count = fields.Integer() is_selected = fields.Boolean() field = fields.Str() facetCounts = ma.List(ma.Nested(FacetCountSchema))
class CartSchema(ma.SQLAlchemySchema): class Meta: model = Cart ordered = True id = ma.auto_field() store_id = ma.auto_field() products = ma.List(ma.Nested(CartProductSchema))
class StoreProductsSchema(ma.SQLAlchemySchema): class Meta: model = Store ordered = True id = ma.auto_field() name = ma.auto_field() products = ma.List(ma.Nested(ProductStockSchema))
class VerificationSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Verification include_fk = True status = EnumField(Status) value = EnumField(Value) pub_date = ma.DateTime(format='%d/%m\n%H:%M') results = ma.List(ma.HyperlinkRelated("api.results_result_by_id")) model = ma.HyperlinkRelated("api.models_model_by_id")
class ProjectDataSchema(ma.Schema): class Meta: fields = ("id", "domain", "type", "biz_id", "is_online", "last_online_ts", "tags", "owner", "leader", "customers", "meta_data", "ext_data", "start_msg_id", "msg_id", "current_session_id") owner = ma.Nested(RawCustomerSchema) leader = ma.Nested(RawStaffSchema) customers = ma.List(ma.Nested(RawCustomerSchema)) last_online_ts = ma.Function( lambda s: s.last_online_ts and s.last_online_ts.timestamp())
class ProductDeserializeSchema(ProductSchema): class Meta: model = models.Product fields = ('name', 'description', 'price', 'category', 'status', 'tags') category = ma.Function(deserialize=lambda v: models.Category.query.get( v), required=True, validate=[validate.NoneOf([None])]) status = ma.Function(deserialize=models.ProductStatusEnum.find, required=True, validate=[validate.NoneOf([None])]) tags = ma.List(ma.String(), required=True)
class SeasonSchema(ma.Schema): class Meta: fields = ('id', 'league_id', 'weeks_number', 'disabled', 'start_date', 'weeks') weeks = ma.List(ma.Nested(WeekSchema))
class DataTransferLogPageSchema(ma.Schema): pages = fields.Integer() total = fields.Integer() items = ma.List(ma.Nested(DataTransferLogSchema))
class UserSearchSchema(ma.Schema): pages = fields.Integer() total = fields.Integer() items = ma.List(ma.Nested(UserSchema))
class CreateAuthorSchema(ma.Schema): first_name = ma.Str(required=True, validate=Length(max=100)) middle_name = ma.Str(validate=Length(max=100), missing=None) last_name = ma.Str(validate=Length(max=100), missing=None) bio = ma.Str(validate=Length(max=100000), missing=None) books = ma.List(ma.Integer, missing=[])
class AuthorSchema(ma.ModelSchema): class Meta: model = Author unknown = EXCLUDE books = ma.List(ma.HyperlinkRelated("books_api", "book_id"))
class PageOfSessionsSchema(PaginationSchema): items = ma.List(ma.Nested(SessionItemSchema))
class AuthorSchema(ma.ModelSchema): class Meta: model = Author books = ma.List(ma.HyperlinkRelated('book', url_key='id'))
class FetchMsgsResultSchema(ma.Schema): class Meta: fields = ("msgs", "has_more", "no_more") msgs = ma.List(ma.Nested(MessageSchema))
class BookSchema(ma.ModelSchema): class Meta: model = Book exclude = ['user_ratings'] authors = ma.List(ma.HyperlinkRelated('author', url_key='author_id'))
class RecipeSchema(ma.ModelSchema): class Meta: model = Recipe ingredients = ma.List(ma.Nested(IngredientsSchema))
class PostPostInputValidateSchema(ma.Schema): content = ma.Str(required=True, validate=Length(min=1)) title = ma.Str(required=True, validate=Length(min=1, max=30)) images = ma.List(ma.String(validate=Length(max=100), required=True)) is_anonymous = ma.Boolean(required=True)
class PostPatchInputValidateSchema(ma.Schema): content = ma.Str(required=False, validate=Length(min=1)) title = ma.Str(required=False, validate=Length(min=1, max=30)) images = ma.List(ma.String(validate=Length(max=100)), required=False)
class ActivitySchema(ma.Schema): class Meta: fields = ('id', 'league_id', 'points', 'name', 'bonus', 'limit', 'member_activity_week') member_activity_week = ma.List(ma.Nested(MemberActivityWeekSchema))
class WeekSchema(ma.Schema): class Meta: fields = ('id', 'season_id', 'index', 'member_activity_week') member_activity_week = ma.List(ma.Nested(MemberActivityWeekSchema))