from apollo_utils.service.schemas.fields.list import SplitUniqueListField from marshmallow import Schema, ValidationError, fields, post_load class UserFavoriteTracks: """Register favorite tracks or playlists.""" class Request(Schema): user_id = SplitUniqueListField(fields.String(), default=None, missing=None, force_list=True) isrc_list = SplitUniqueListField(fields.String(), default=None, missing=None, force_list=True) @post_load def validate_user(self, data, **kwargs): if any([data.get("user_id"), data.get("isrc_list")]): return data raise ValidationError("At least one of 'user_id' or 'isrc_list' params should be provided.") class Response(Schema): users = fields.List(fields.String()) isrc = fields.String()