lemur/lemur/notifications/schemas.py

56 lines
1.8 KiB
Python
Raw Permalink Normal View History

2016-05-10 20:27:57 +02:00
"""
.. module: lemur.notifications.schemas
:platform: unix
:copyright: (c) 2018 by Netflix Inc., see AUTHORS for more
2016-05-10 20:27:57 +02:00
:license: Apache, see LICENSE for more details.
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com>
"""
2016-05-12 21:38:44 +02:00
from marshmallow import fields, post_dump
2016-05-10 20:27:57 +02:00
from lemur.common.schema import LemurInputSchema, LemurOutputSchema
2019-05-16 16:57:02 +02:00
from lemur.schemas import (
PluginInputSchema,
PluginOutputSchema,
AssociatedCertificateSchema,
)
2016-05-10 20:27:57 +02:00
class NotificationInputSchema(LemurInputSchema):
2016-05-12 21:38:44 +02:00
id = fields.Integer()
2016-05-10 20:27:57 +02:00
label = fields.String(required=True)
description = fields.String()
active = fields.Boolean()
2016-05-12 21:38:44 +02:00
plugin = fields.Nested(PluginInputSchema, required=True)
certificates = fields.Nested(AssociatedCertificateSchema, many=True, missing=[])
added_certificates = fields.Nested(AssociatedCertificateSchema, many=True, missing=[])
removed_certificates = fields.Nested(AssociatedCertificateSchema, many=True, missing=[])
2016-05-10 20:27:57 +02:00
class NotificationOutputSchema(LemurOutputSchema):
id = fields.Integer()
label = fields.String()
description = fields.String()
active = fields.Boolean()
2016-05-12 21:38:44 +02:00
options = fields.List(fields.Dict())
plugin = fields.Nested(PluginOutputSchema)
@post_dump
def fill_object(self, data):
if data:
2019-05-16 16:57:02 +02:00
data["plugin"]["pluginOptions"] = data["options"]
2016-05-12 21:38:44 +02:00
return data
2016-05-10 20:27:57 +02:00
class NotificationNestedOutputSchema(LemurOutputSchema):
__envelope__ = False
id = fields.Integer()
label = fields.String()
description = fields.String()
active = fields.Boolean()
options = fields.List(fields.Dict())
plugin = fields.Nested(PluginOutputSchema)
2016-05-10 20:27:57 +02:00
notification_input_schema = NotificationInputSchema()
notification_output_schema = NotificationOutputSchema()
notifications_output_schema = NotificationOutputSchema(many=True)