"""GDA Score Calculation Schema.""" from marshmallow import Schema from marshmallow import fields from . import constants CalculateScoreSchema = Schema.from_dict( { # native Salesforce fields 'Email': fields.Email(required=True), 'Company': fields.String(required=True), 'Country': fields.String(required=True), 'FirstName': fields.String(required=True), 'LastName': fields.String(required=True), 'RecordTypeId': fields.String(), # custom fields 'Role__c': fields.String( required=True, data_key='Role__c', validate=lambda val: val in constants.ALLOWED_ROLES, error_messages={ 'validator_failed': 'Value should be "Artist or Band", "Label",' ' "Manager" or "Other".' } ), 'CorrelationId__c': fields.String(allow_none=True), 'GlobalParticipantUrl__c': fields.String(allow_none=True), 'ExistingLabelParticipants__c': fields.String(allow_none=True), 'LeadScore__c': fields.String(required=True), 'AmazonMusicUrl__c': fields.String(allow_none=True), 'DeezerFans__c': fields.Integer(allow_none=True), 'DeezerUrl__c': fields.String(allow_none=True), 'FacebookUrl__c': fields.String(allow_none=True), 'FacebookFollowers__c': fields.Integer(allow_none=True), 'InstagramFollowers__c': fields.Integer(allow_none=True), 'InstagramUrl__c': fields.String(allow_none=True), 'Orchard_Lead_Id__c': fields.String(allow_none=True), 'OtherUrl__c': fields.String(allow_none=True), 'SoundcloudFollowers__c': fields.Integer(allow_none=True), 'SoundcloudUrl__c': fields.String(allow_none=True), 'SpotifyFollowers__c': fields.Integer(allow_none=True), 'SpotifyMonthlyListeners__c': fields.Integer(allow_none=True), 'SpotifyUrl__c': fields.String(allow_none=True), 'TiktokFollowers__c': fields.Integer(allow_none=True), 'TiktokUrl__c': fields.String(allow_none=True), 'TwitterUrl__c': fields.String(allow_none=True), 'TwitterFollowers__c': fields.Integer(allow_none=True), 'YoutubeSubscribers__c': fields.Integer(allow_none=True), 'YoutubeUrl__c': fields.String(allow_none=True), 'Language__c': fields.String( allow_none=True, data_key='Language__c', load_default='en', validate=lambda val: val.lower() in constants.ALLOWED_LANGUAGES, error_messages={ 'validator_failed': 'Value should be "en", "de", "es", ' '"fr", "it", "ja", "ko", "pt", "ru", ' '"tr", "zh-cn", "zh-tw"' } ), 'ExternalTest__c': fields.Boolean( data_key='ExternalTest__c', load_default=False ), 'Environment__c': fields.String(required=True), 'Currency__c': fields.String(required=True), 'SigningEntity__c': fields.String(required=True), 'Comments__c': fields.String(allow_none=True), 'VoucherCode__c': fields.String(allow_none=True), 'VoucherCodeOwner__c': fields.String(allow_none=True), 'Consultant__c': fields.Boolean( load_default=False ), })