Source code for parseur.schemas.webhook

from marshmallow import fields, post_load, pre_load, validate

from parseur.event import ParseurEvent
from parseur.schemas import BaseSchema


[docs]class WebhookSchema(BaseSchema):
[docs] id = fields.Int(required=True)
[docs] category = fields.String(required=True)
[docs] event = fields.String( required=True, validate=validate.OneOf([e.value for e in ParseurEvent]), )
[docs] target = fields.String(required=True)
[docs] name = fields.String(allow_none=True)
[docs] headers = fields.Dict(keys=fields.String(), values=fields.String(), allow_none=True)
@pre_load
[docs] def normalize_empty_fields(self, data, **kwargs): if "headers" in data and data["headers"] == "": data["headers"] = None if "name" in data and data["name"] == "": data["name"] = None return data
@post_load
[docs] def default_empty_headers(self, data, **kwargs): if data.get("headers") is None: data["headers"] = {} return data
@post_load
[docs] def default_empty_name(self, data, **kwargs): if data.get("name") is None: data["name"] = "" return data