"""GDA Artist Signup Schema.""" from marshmallow import Schema from marshmallow import fields from src import consts # noqa:I202 from src import config # noqa:I202 class ArtistSignupKafkaSchema(Schema): """Artist signup Kafka schema.""" Email = fields.String(required=True) Company = fields.String(required=True) FirstName = fields.String(required=True) LastName = fields.String(required=True) Role__c = fields.String( required=True, validate=lambda val: val in consts.ALLOWED_ROLES, error_messages={ 'validator_failed': 'Value should be "Artist or Band", "Label",' ' "Manager" or "Other".' } ) Country = fields.String(required=True) SpotifyUrl__c = fields.String(allow_none=True) SpotifyFollowers__c = fields.Integer(allow_none=True) InstagramUrl__c = fields.String(allow_none=True) YoutubeUrl__c = fields.String(allow_none=True) DeezerUrl__c = fields.String(allow_none=True) AmazonMusicUrl__c = fields.String(allow_none=True) FacebookUrl__c = fields.String(allow_none=True) TwitterUrl__c = fields.String(allow_none=True) TiktokUrl__c = fields.String(allow_none=True) SoundcloudUrl__c = fields.String(allow_none=True) OtherUrl__c = fields.String(allow_none=True) VoucherCode__c = fields.String(allow_none=True) Language__c = fields.String( allow_none=True, default='en', validate=lambda val: val.lower() in consts.ALLOWED_LANGUAGES, error_messages={ 'validator_failed': 'Value should be "en", "de", "es", ' '"fr", "it", "ja", "ko", "pt", "ru", ' '"tr", "zh-cn", "zh-tw"' } ) Currency__c = fields.String(required=True) SigningEntity__c = fields.String(required=True) ExternalTest__c = fields.Boolean() Environment__c = fields.String(default=config.ENVIRONMENT) # output message fields RecordTypeId = fields.String() CorrelationId__c = fields.String() KafkaMessageHeaders__c = fields.Dict()