from apollo_utils.service.schemas.fields.list import SplitUniqueListField from apollo_utils.service.schemas.mixins.isrc import get_isrc_list_mixin from marshmallow import ValidationError, fields, validates_schema class TrackIdISRCListsRequiredMixin(get_isrc_list_mixin(required=False)): track_id_list = SplitUniqueListField(fields.String(required=True), data_key="track_id") @validates_schema def validate_data(self, data: dict, *args, **kwargs): if "track_id_list" not in data and "isrc_list" not in data: raise ValidationError("Missing at least one of track_id, isrc.")