from apollo_utils.service.schemas.fields.enum import EnumListField from apollo_utils.service.schemas.mixins.market import MarketDefaultGlobalMixin from marshmallow import fields from server.constants.distributors import DISTRIBUTORS, DISTRIBUTORS_ORDER from server.schemas.base.schemas import RequestSchema, Schema class SpotifyAlbumWithTracks: class Request(RequestSchema, MarketDefaultGlobalMixin): distributors = EnumListField(DISTRIBUTORS, unify=True, missing=list(DISTRIBUTORS_ORDER), as_enum=True) class Response(Schema): album_type = fields.String() artists = fields.List(fields.Dict) available_markets = fields.List(fields.String()) copyrights = fields.List(fields.Dict()) external_ids = fields.Dict() external_urls = fields.Dict() genres = fields.List(fields.String()) href = fields.String() id = fields.String() images = fields.List(fields.Dict()) label = fields.String() name = fields.String() popularity = fields.Integer() release_date = fields.Date() release_date_precision = fields.String() total_tracks = fields.Integer() tracks = fields.List(fields.Dict()) type = fields.String() uri = fields.String() is_sony = fields.Boolean(default=False) distributed_by = fields.String(default=None)