class AddDownloadParse(BaseMarshmallow): title = fields.String(validate=[validate.str_range(0, 128)], required=True) description = fields.String() version = fields.String(validate=[validate.str_range(0, 64)]) language = fields.String(validate=[validate.str_range(0, 128)]) file_id = fields.Integer(validate=[validate.data_exist(Upload)], required=True) category_id = fields.Integer( validate=[validate.category_exist("download")], required=True) cover_id = fields.Integer(validate=[validate.image_exist], required=True)
class ServiceHistorySchema(ma.Schema): id = fields.UUID() name = fields.String() created_at = fields.DateTime() updated_at = fields.DateTime() active = fields.Boolean() message_limit = fields.Integer() restricted = fields.Boolean() email_from = fields.String() created_by_id = fields.UUID() version = fields.Integer()
class ValueSchema(ma_sq.schema.SQLAlchemySchema): class Meta: model = ValueDao include_relationships = True load_instance = True sqla_session = orm_utils.orm_session() uid = fields.Integer() name = fields.String(required=True, allow_none=False, validate=validate.Length(min=1)) parameter = fields.Pluck('ParameterSchema', 'uid', allow_none=True) position = fields.Integer(allow_none=True)
class TransactionsSerializer(ma.SQLAlchemyAutoSchema): id = fields.Str() customer_id = fields.Str(required=True) doc_id = fields.Str(required=True) score = fields.Float(required=True, default=0.0) income = fields.Float(required=True, default=0.0) requested_value = fields.Float(required=True, default=0.0) installments = fields.Integer(required=True, default=0) status = fields.Integer(required=True, default=400) time = fields.DateTime(requested=True, default=datetime.now) class Meta: model = Transactions include_fk = True
class AddAdminParse(BaseMarshmallow): username = fields.String(validate=[validate.str_range(6, 16)], required=True) password = fields.String(validate=[validate.str_range(8, 16)], required=True) password_ = fields.String(validate=[validate.str_range(8, 16)], required=True) nickname = fields.String(validate=[validate.str_range(0, 32)], missing="admin") remark = fields.String(validate=[validate.str_range(0, 255)]) image_id = fields.Integer(validate=[validate.image_exist])
class UpdateValueSchema(Schema): uid = fields.Integer(load_only=True) name = fields.String(required=True, allow_none=False, validate=validate.Length(min=1)) parameter = fields.Pluck('UpdateNestedParameterSchema', 'uid', allow_none=True) position = fields.Integer(load_only=True) @validates('uid') def validate_uid(self, data, **kwargs): raise ValidationError("Cannot modify read-only field") @validates('position') def validate_position(self, data, **kwargs): raise ValidationError("Cannot modify read-only field")
class ParameterSchema(ma_sq.SQLAlchemySchema): class Meta: model = ParameterDao include_relationships = True include_fk = True load_instance = True sqla_session = orm_utils.orm_session() uid = fields.Integer() name = fields.String(required=True, allow_none=False, validate=validate.Length(min=1)) values = fields.Nested(ValueSchema, many=True) parameter_set = fields.Pluck('ParameterSetSchema', 'uid', allow_none=True) position = fields.Integer(allow_none=True) excluded = fields.Pluck("ParameterSchema", "uid", many=True) excluded_by = fields.Pluck("ParameterSchema", "uid", many=True)
class ProfilesSerializer(ma.SQLAlchemyAutoSchema): id = fields.Integer() uuid = fields.Str() doc_id = fields.Str(required=True) score = fields.Float(required=True) revenue = fields.Float(required=True) class Meta: model = Profiles
class UpdateParameterSchema(Schema): uid = fields.Integer(load_only=True) name = fields.String(required=True, allow_none=False, validate=validate.Length(min=1)) values = fields.Nested('ValueSchema', many=True) parameter_set = fields.Pluck('ParameterSetSchema', 'uid', allow_none=True) position = fields.Integer(load_only=True) excluded = fields.Pluck("ParameterSchema", "uid", many=True) excluded_by = fields.Pluck("ParameterSchema", "uid", many=True) @validates('uid') def validate_uid(self, data, **kwargs): raise ValidationError("Cannot modify read-only field") @validates('position') def validate_position(self, data, **kwargs): raise ValidationError("Cannot modify read-only field")
class MoveSchema(Schema): numItems = fields.Integer(required=True) oldIndex = fields.Integer(required=True, validate=validate.Range(min=0)) newIndex = fields.Integer(required=True, validate=validate.Range(min=0)) # noinspection PyUnusedLocal @validates_schema() def validate_indices_with_items(self, data, **kwargs): number_of_values = data.pop('numItems') errors = {} limit_message = f"Must be less than or equal to {number_of_values}." for index_name, index_value in data.items(): if index_value >= number_of_values: errors[index_name] = [ limit_message, ] if errors: raise ValidationError(errors)
class UpdateNestedParameterSchema(Schema): uid = fields.Integer(required=True) # noinspection PyUnusedLocal @post_load() def get_parameter(self, item, many, **kwargs): parameter = ParameterDao.query.get(item['uid']) # @UndefinedVariable if parameter is None: message = f"No parameter with uid={item['uid']} was found" raise ValidationError(message) return parameter
class PaymentIsoClientRequestSchema(Schema): class Meta: strict = True required = True allow_none = False organisation_id = fields.Integer() trx_type_id = fields.Integer() trx_amount = fields.Number() va_number = fields.Str() location = fields.Str() transaction_date = fields.DateTime() description = fields.Str() trace_number = fields.Str() username = fields.Str() customer_name = fields.Str() obu_wallet_id = fields.Integer() customer_id = fields.Integer() @post_load def get_payment_isoclient_request(self, data): return PaymentIsoClientData(**data)
class ParameterExclusionSchema(ma_sq.SQLAlchemySchema): class Meta: model = ParameterDao include_relationships = True include_fk = True load_instance = True sqla_session = orm_utils.orm_session() uid = fields.Integer() name = fields.String(required=True) excluded = fields.Nested(ParameterSchema(only=("name", "uid")), many=True, dump_only=True) excluded_by = fields.Nested(ParameterSchema(only=("name", "uid")), many=True, dump_only=True)
class PictureAlbumListParse(BaseMarshmallow): page = fields.Integer(validate=[validate.positive], missing=1) rows = fields.Integer(validate=[validate.positive], missing=10) word = fields.String() category = fields.Integer( validate=[validate.category_exist(module="picture")])
class GetAdminListParse(BaseMarshmallow): page = fields.Integer(validate=[validate.positive], missing=1) rows = fields.Integer(validate=[validate.positive], missing=10) word = fields.String()
class UpdateAdminInfoParse(BaseMarshmallow): password = fields.String(validate=[validate.str_range(8, 16)]) password_ = fields.String(validate=[validate.str_range(8, 16)]) nickname = fields.String(validate=[validate.str_range(0, 32)], missing="admin") remark = fields.String(validate=[validate.str_range(0, 255)]) image_id = fields.Integer(validate=[validate.image_exist])
class AddCommentParse(BaseMarshmallow): content = fields.String(required=True) article_id = fields.Integer(validate=[validate.data_exist(Article)]) reply_comment_id = fields.Integer(validate=[validate.data_exist(Comment)])
class CommentListParse(BaseMarshmallow): page = fields.Integer(validate=[validate.positive], missing=1) rows = fields.Integer(validate=[validate.positive], missing=10) word = fields.String() article_id = fields.Integer(validate=[validate.data_exist(Article)]) user_id = fields.Integer(validate=[validate.data_exist(User)])
class ThemeCommentListParse(BaseMarshmallow): page = fields.Integer(validate=[validate.positive], missing=1) rows = fields.Integer(validate=[validate.positive], missing=10)
class ProductsMetadata(ma.SQLAlchemySchema): class Meta: model = Products product_id = fields.Integer() quantity = fields.Integer()
class OrdersDetailSchema(ma.SQLAlchemySchema): class Meta: model = OrderDetail client_id = fields.Integer() products = fields.List(fields.Nested(ProductsMetadata))
class AddAlbumParse(BaseMarshmallow): title = fields.String(validate=[validate.str_range(0, 128)], required=True) description = fields.String() category_id = fields.Integer(validate=[validate.category_exist("picture")], required=True) cover_id = fields.Integer(validate=[validate.image_exist], required=True)
class PictureInfoParse(BaseMarshmallow): description = fields.String() image_id = fields.Integer(validate=[validate.image_exist], required=True)
class AddPictureParse(BaseMarshmallow): description = fields.String() image_id = fields.Integer(validate=[validate.image_exist], required=True) picture_album_id = fields.Integer( validate=[validate.data_exist(PictureAlbum)], required=True)
class AddCategoryParse(BaseMarshmallow): title = fields.String(validate=[validate.str_range(1, 128)], required=True) sort = fields.Integer(missing=20) module = fields.String(validate=[validate.choice(array=Category.MODULE_TYPE.keys())]) upper_id = fields.Integer(validate=[validate.category_exist(level=1)])
class PaginateSchema(BaseMarshmallow): class Meta: fields = ("page", "pages", "rows", "has_next", "has_prev", "total") rows = fields.Integer(attribute="per_page")
class UpdateCategoryParse(BaseMarshmallow): title = fields.String(validate=[validate.str_range(1, 128)], required=True) sort = fields.Integer(missing=20) upper_id = fields.Integer(validate=[validate.category_exist(level=1)])
class UpdateUserInfoParse(BaseMarshmallow): nickname = fields.String(validate=[validate.str_range(0, 32)]) description = fields.String(validate=[validate.str_range(0, 255)]) gender = fields.Integer(validate=[validate.choice([0, 1, 2])], missing=0) image_id = fields.Integer(validate=[validate.image_exist])
class DownloadListParse(BaseMarshmallow): page = fields.Integer(validate=[validate.positive], missing=1) rows = fields.Integer(validate=[validate.positive], missing=10) word = fields.String() category = fields.Integer( validate=[validate.category_exist(module="download")])