"""Contract Exclusion schemas.""" from abacus_common_logic.marshalling.custom_fields import ma class ExclusionsSchema(ma.Schema): """Schema for contract's exclusions.""" class Meta: """Meta data class.""" title = 'Contract Exclusion POST request body' example = { 'countries': ['USA', 'CAN'], 'stores': ['123', '456'], } countries = ma.List( ma.String(), required=True, description='List of country codes to be excluded from contract distribution', ) stores = ma.List( ma.String(), required=True, description='List of store_ids to be excluded from contract distribution', ) class ContractExclusionSchema(ma.Schema): """Schema for contract exclusion details.""" class Meta: """Meta data class.""" title = 'Contract Distribution Exclusion Details' example = { 'contract_exclusion_id': 1, 'contract_id': 1, 'exclusions': { 'countries': ['USA', 'CAN'], 'stores': ['123', '456'], }, } contract_exclusion_id = ma.IntegerId( required=True, description='Id of contract exclusion' ) contract_id = ma.IntegerId(required=True, description='Id of contract') exclusions = ma.Nested( ExclusionsSchema, description='Country/territory and store/service exclusions', ) class ContractExclusionListResponseSchema(ma.Schema): """ContractExclusion list schema.""" items = ma.Nested(ContractExclusionSchema, many=True) total = ma.Integer(required=True)