""" .. module: lemur.notifications.models :platform: Unix :copyright: (c) 2018 by Netflix Inc., see AUTHORS for more :license: Apache, see LICENSE for more details. .. moduleauthor:: Kevin Glisson """ from sqlalchemy.orm import relationship from sqlalchemy import Integer, String, Column, Boolean, Text from sqlalchemy_utils import JSONType from lemur.database import db from lemur.plugins.base import plugins from lemur.models import certificate_notification_associations, \ pending_cert_notification_associations class Notification(db.Model): __tablename__ = 'notifications' id = Column(Integer, primary_key=True) label = Column(String(128), unique=True) description = Column(Text()) options = Column(JSONType) active = Column(Boolean, default=True) plugin_name = Column(String(32)) certificates = relationship( "Certificate", secondary=certificate_notification_associations, passive_deletes=True, backref="notification", cascade='all,delete' ) pending_certificates = relationship( "PendingCertificate", secondary=pending_cert_notification_associations, passive_deletes=True, backref="notification", cascade='all,delete' ) @property def plugin(self): return plugins.get(self.plugin_name) def __repr__(self): return "Notification(label={label})".format(label=self.label)