Example #1
0
class Log(BaseModel):

    __tablename__ = "logs"
    __repr_fields__ = ("level", "message", "key")

    level = db.Column(db.String(10), nullable=False)
    message = db.Column(db.String(), nullable=False)
    key = db.Column(db.String(50), nullable=False)
Example #2
0
class News(BaseModel):

    __tablename__ = "news"

    title = db.Column(db.String(100), nullable=False)
    message = db.Column(db.String(), nullable=False)
    users = db.relationship(
        "User", backref=db.backref("news", uselist=True), secondary="users_news"
    )
Example #3
0
File: users.py Project: mferon/depc
class User(BaseModel, UserMixin):

    __tablename__ = "users"
    __repr_fields__ = ("name", )

    name = db.Column(db.String(255), nullable=False, unique=True)
    admin = db.Column(db.Boolean(), default="f")
    active = db.Column(db.Boolean(), default="t")

    teams = association_proxy("grants", "team")

    def is_authenticated(self):
        return True

    def is_active(self):
        return self.active

    def is_anonymous(self):
        return False

    def is_admin(self):
        return self.admin

    def get_id(self):
        return self.id
Example #4
0
class Check(BaseModel):

    __tablename__ = "checks"
    __repr_fields__ = ("name",)

    name = db.Column(db.String(255), nullable=False)

    source_id = db.Column(
        UUIDType(binary=False), db.ForeignKey("sources.id"), nullable=False
    )
    source = db.relationship(
        "Source", backref=db.backref("source_checks", uselist=True)
    )

    type = db.Column(db.String(255), nullable=False)
    parameters = db.Column(MutableDict.as_mutable(JSONType), default={}, nullable=True)

    variables = db.relationship("Variable", backref="check")
Example #5
0
class Variable(BaseModel):

    __tablename__ = "variables"
    __repr_fields__ = ("name", "value", "type")

    name = db.Column(db.String(255), nullable=False)
    value = db.Column(db.String(), nullable=False)
    type = db.Column(db.String(255), nullable=False)

    rule_id = db.Column(UUIDType(binary=False),
                        db.ForeignKey("rules.id"),
                        nullable=True)
    team_id = db.Column(UUIDType(binary=False),
                        db.ForeignKey("teams.id"),
                        nullable=False)
    source_id = db.Column(UUIDType(binary=False),
                          db.ForeignKey("sources.id"),
                          nullable=True)
    check_id = db.Column(UUIDType(binary=False),
                         db.ForeignKey("checks.id"),
                         nullable=True)

    @property
    def level(self):
        if self.check_id:
            return "check"
        elif self.source_id:
            return "source"
        elif self.rule_id:
            return "rule"
        else:
            return "team"

    @property
    def expression(self):
        exp = "depc.{level}['{name}']" if " " in self.name else "depc.{level}.{name}"
        return exp.format(level=self.level, name=self.name)
Example #6
0
class Source(BaseModel):

    __tablename__ = "sources"
    __repr_fields__ = ("name", "plugin")

    name = db.Column(db.String(255), nullable=False)

    plugin = db.Column(db.String(255), nullable=False)
    configuration = db.Column(EncryptedDict, default={}, nullable=True)

    checks = db.relationship("Check", back_populates="source")

    team_id = db.Column(UUIDType(binary=False),
                        db.ForeignKey("teams.id"),
                        nullable=True)
    team = db.relationship("Team", back_populates="sources")

    variables = db.relationship(
        "Variable",
        primaryjoin="and_(Source.id==Variable.source_id, "
        "Variable.rule_id==None, "
        "Variable.check_id==None)",
        backref="source",
    )
Example #7
0
class Team(BaseModel):

    __tablename__ = "teams"
    __repr_fields__ = ("name", )

    name = db.Column(db.String(255), nullable=False)
    sources = db.relationship("Source", back_populates="team")
    rules = db.relationship("Rule", back_populates="team")
    configs = db.relationship("Config", back_populates="team")
    worst = db.relationship("Worst", back_populates="team")

    grants = association_proxy("grants", "user")
    variables = db.relationship(
        "Variable",
        primaryjoin="and_(Team.id==Variable.team_id, "
        "Variable.rule_id==None, "
        "Variable.source_id==None, "
        "Variable.check_id==None)",
        backref="team",
    )
    metas = db.Column(EncryptedDict, default={}, nullable=True)

    @property
    def members(self):
        return [
            grant.user for grant in self.grants if grant.role.value == "member"
        ]

    @property
    def editors(self):
        return [
            grant.user for grant in self.grants if grant.role.value == "editor"
        ]

    @property
    def managers(self):
        return [
            grant.user for grant in self.grants
            if grant.role.value == "manager"
        ]

    @property
    def kafka_topic(self):
        return "".join(e for e in self.name if e.isalnum()).lower()
Example #8
0
class Worst(BaseModel):

    __tablename__ = "worst"
    __table_args__ = (UniqueConstraint("team_id",
                                       "label",
                                       "date",
                                       "period",
                                       name="team_label_date_period_uc"), )
    __repr_fields__ = ("team", "label", "date", "period")

    team_id = db.Column(UUIDType(binary=False),
                        db.ForeignKey("teams.id"),
                        nullable=False)
    team = db.relationship("Team", back_populates="worst")
    date = db.Column(db.DateTime(timezone=True), nullable=False)
    label = db.Column(db.String(255), nullable=False)
    period = db.Column(db.Enum(Periods), nullable=False, unique=False)
    data = db.Column(MutableDict.as_mutable(JSONType),
                     default={},
                     nullable=False)