from marshmallow import Schema, fields, INCLUDE, EXCLUDE, post_load from charts_messages.utils import parse_chart_country_code class IncomingEvent(Schema): class Meta: unknown = INCLUDE class MetaNested(Schema): domain = fields.String() id = fields.String() dsp = fields.String() country_code = fields.String() type = fields.String(allow_none=True) breakdown = fields.String() id = fields.Integer(required=True) app = fields.String() code = fields.String() ttl = fields.Integer(required=True) created_at = fields.DateTime(required=True) meta = fields.Nested(MetaNested) class IncomingUpdateEvent(Schema): class Meta: unknown = INCLUDE class MetaNested(Schema): class Meta: unknown = EXCLUDE domain = fields.String() dsp = fields.String() country_code = fields.String() breakdown = fields.String() @post_load def handle_delphi_specific_market(self, data, *args, **kwargs): country_code = data.get("country_code") if country_code: data["country_code"] = parse_chart_country_code(country_code) return data id = fields.Integer(required=True) app = fields.String() code = fields.String() ttl = fields.Integer(required=True) created_at = fields.DateTime(required=True) meta = fields.Nested(MetaNested)