Exemple #1
0
class Active(Base, db.Model):
    __table_args__ = (db.UniqueConstraint('assessment_id', 'name'), )
    __serialization__ = [
        AttributeConfiguration(name='name',
                               csv_sequence=1,
                               **supported_serialization),
        AttributeConfiguration(name='uris', **supported_serialization),
    ]

    id = db.Column(db.Integer, primary_key=True)

    assessment_id = db.Column(db.Integer,
                              db.ForeignKey('assessment.id',
                                            onupdate='CASCADE',
                                            ondelete='CASCADE'),
                              nullable=False)
    assessment = db.relationship(Assessment, uselist=False)

    name = db.Column(db.String(128))

    active_resources = db.relationship('AffectedResource',
                                       back_populates='active')

    @property
    def uris(self):
        for resource in self.active_resources:
            yield resource.uri
Exemple #2
0
class AffectedResource(Base, db.Model):
    __table_args__ = (db.UniqueConstraint('active_id', 'route'), )
    __serialization__ = [
        AttributeConfiguration(name='uri',
                               csv_sequence=1,
                               **supported_serialization),
    ]

    id = db.Column(db.Integer, primary_key=True)

    active_id = db.Column(db.Integer,
                          db.ForeignKey('active.id',
                                        onupdate='CASCADE',
                                        ondelete='CASCADE'),
                          nullable=False)
    active = db.relationship(Active,
                             uselist=False,
                             back_populates='active_resources')

    route = db.Column(db.String(256))

    findings = db.relationship('Finding', secondary=finding_affected_resource)

    @property
    def uri(self):
        return "{}{}".format(self.active.name, self.route or '')

    def delete_last_reference(self):
        if len(self.findings) == 1:
            if len(self.active.active_resources
                   ) == 1 and self.active.active_resources[0] is self:
                self.active.delete()
            else:
                self.delete()
Exemple #3
0
class AffectedResource(Base, db.Model):
    __table_args__ = (db.UniqueConstraint('active_id', 'route'), )

    id = db.Column(db.Integer, primary_key=True)

    active_id = db.Column(db.Integer,
                          db.ForeignKey('active.id',
                                        onupdate='CASCADE',
                                        ondelete='CASCADE'),
                          nullable=False)
    active = db.relationship(Active,
                             uselist=False,
                             back_populates='active_resources')

    route = db.Column(db.String(256))

    findings = db.relationship('Finding', secondary=finding_affected_resource)

    @property
    def uri(self):
        return "{}{}".format(self.active.name, self.route or '')