class RulesSerializer(Serializer): user = fields.ObjectField(UserRulesSerializer, required=True) post = fields.ObjectField(PostRulesSerializer, required=True) comment = fields.ObjectField(CommentRulesSerializer, required=True) class Meta(object): model = Rules
class UserProfileDtoSerializer(Serializer): href = fields.StringField(required=True) username = fields.StringField( required=True, validators=[ NotEmptyValidator(), CharLenValidator(min=settings.rules.user.username_min_char, max=settings.rules.user.username_max_char), RegexValidator(pattern=USERNAME_PATTERN) ]) full_name = fields.StringField( required=True, name='fullName', validators=[ NotEmptyValidator(), CharLenValidator(min=settings.rules.user.name_min_char, max=settings.rules.user.name_max_char) ]) avatar_href = fields.StringField(name='avatarHref') email = fields.StringField( required=True, validators=[NotEmptyValidator(), EmailValidator()]) posts = fields.ListField(fields.ObjectField(PostDtoSerializer)) comments = fields.ListField(fields.ObjectField(CommentDtoSerializer)) liked_posts = fields.ListField(fields.ObjectField(PostDtoSerializer), name='likedPosts') last_posted = fields.DateTimeField(name='lastPosted') last_activity = fields.DateTimeField(name='lastActivity') register_date = fields.DateTimeField(required=True, name='registerDate') links = fields.ListField(fields.ObjectField(LinkDtoSerializer)) class Meta(object): model = UserProfileDto
class PostDtoSerializer(Serializer): href = fields.StringField() author = fields.StringField() title = fields.StringField(validators=[ NotEmptyValidator(), CharLenValidator(min=settings.rules.post.title_min_char, max=settings.rules.post.title_max_char) ]) description = fields.StringField(validators=[ NotEmptyValidator(), CharLenValidator(min=settings.rules.post.title_min_char, max=settings.rules.post.title_max_char) ]) content = fields.StringField(validators=[NotEmptyValidator()]) tags = fields.ListField( fields.StringField(validators=[ NotEmptyValidator(), CharLenValidator(min=settings.rules.post.tag_min_char, max=settings.rules.post.tag_max_char) ])) private = fields.BooleanField() featured = fields.BooleanField() created = fields.DateTimeField() edited = fields.DateTimeField() comments = fields.ListField(fields.ObjectField(CommentDtoSerializer)) likes = fields.IntegerField() views = fields.IntegerField() links = fields.ListField(fields.ObjectField(LinkDtoSerializer)) class Meta(object): model = PostDto
class SettingsSerializer(Serializer): login = fields.ObjectField(LoginSettingsSerializer, required=True) post = fields.ObjectField(PostSettingsSerializer, required=True) user = fields.ObjectField(UserSettingsSerializer, required=True) rules = fields.ObjectField(RulesSerializer, required=True) class Meta(object): model = Settings
class ServiceDescriptionDtoSerializer(Serializer): links = fields.ListField(fields.ObjectField(LinkDtoSerializer)) class Meta(object): model = ServiceDescriptionDto
class PostCollectionV2DtoSerializer(Serializer): posts = fields.ListField(fields.ObjectField(PostV2DtoSerializer)) class Model(object): model = PostCollectionV2Dto
class CategoryDtoSerializer(Serializer): links = fields.ListField(fields.ObjectField(LinkDtoSerializer)) category_id = fields.IntegerField(name='categoryId') category_parent_id = fields.IntegerField(name='categoryParentId') category_level = fields.IntegerField(name='categoryLevel') category_name = fields.StringField(name='categoryName') category_updated = fields.IntegerField(name='categoryUpdated') best_offer_enabled = fields.BooleanField(name='bestOffersEnabled') expired = fields.BooleanField() last_updated = fields.IntegerField(name='lastUpdated') class Meta(object): model = CategoryDto
class CommentDtoSerializer(Serializer): href = fields.StringField() author = fields.StringField() content = fields.StringField(validators=[ NotEmptyValidator(), CharLenValidator(min=settings.rules.comment.content_min_char, max=settings.rules.comment.content_max_char) ]) created = fields.DateTimeField() edited = fields.DateTimeField() likes = fields.IntegerField() links = fields.ListField(fields.ObjectField(LinkDtoSerializer)) class Meta(object): model = CommentDto
class CommentCollectionDtoSerializer(Serializer): comments = fields.ListField(fields.ObjectField(CommentDtoSerializer))
class CategoryCollectionDtoSerializer(Serializer): categories = fields.ListField(fields.ObjectField(CategoryDtoSerializer)) links = fields.ListField(fields.ObjectField(LinkDtoSerializer)) class Meta(object): model = CategoryCollectionDto
category_id = fields.IntegerField(name='categoryId') category_parent_id = fields.IntegerField(name='categoryParentId') category_level = fields.IntegerField(name='categoryLevel') category_name = fields.StringField(name='categoryName') category_updated = fields.IntegerField(name='categoryUpdated') best_offer_enabled = fields.BooleanField(name='bestOffersEnabled') expired = fields.BooleanField() last_updated = fields.IntegerField(name='lastUpdated') class Meta(object): model = CategoryDto # manual insert for meta data, cannot reference class before it's created CategoryDtoSerializer.fields.append( fields.ListField(fields.ObjectField(CategoryDtoSerializer), name='children')) class CategoryCollectionDto(object): def __init__(self, categories=None, links=None): self.categories = categories or [] self.links = links or [] class CategoryCollectionDtoSerializer(Serializer): categories = fields.ListField(fields.ObjectField(CategoryDtoSerializer)) links = fields.ListField(fields.ObjectField(LinkDtoSerializer)) class Meta(object): model = CategoryCollectionDto