from marshmallow import fields, validate, post_load from apollo_utils.core.legacy.constants.core import MARKET_GLOBAL, SPOTIFY_MARKET_GLOBAL class MarketGlobalMixin: market = fields.String(validate=validate.Length(max=10, min=2), load_default=MARKET_GLOBAL) class MarketGlobalToUnderscoreGlMixin: """Parse global to _gl""" @post_load def parse_market(self, data, **kwargs): market = data.get("market") if isinstance(market, str): if market == MARKET_GLOBAL: data["market"] = SPOTIFY_MARKET_GLOBAL elif isinstance(market, list): for index, item in enumerate(market): if item == MARKET_GLOBAL: market[index] = SPOTIFY_MARKET_GLOBAL return data class MarketUnderscoreGlToGlobalMixin: """Parse _gl to global.""" @post_load def parse_market(self, data, **kwargs): market = data.get("market") if isinstance(market, str): if market == SPOTIFY_MARKET_GLOBAL: data["market"] = MARKET_GLOBAL elif isinstance(market, list): for index, item in enumerate(market): if item == SPOTIFY_MARKET_GLOBAL: market[index] = MARKET_GLOBAL return data