示例#1
0
class SpatialRefSy(db.Model):
    __tablename__ = 'spatial_ref_sys'
    __table_args__ = (db.CheckConstraint('(srid > 0) AND (srid <= 998999)'), )

    srid = db.Column(db.Integer, primary_key=True)
    auth_name = db.Column(db.String(256))
    auth_srid = db.Column(db.Integer)
    srtext = db.Column(db.String(2048))
    proj4text = db.Column(db.String(2048))
示例#2
0
class Estrutura(db.Model):
    __tablename__ = 'estrutura'

    id = db.Column(db.Integer,
                   primary_key=True,
                   server_default=db.FetchedValue())
    tipo = db.Column(db.String(250), nullable=False)
    descricao = db.Column(db.String(250))
    poligono = db.Column(
        Geometry('POLYGON', 4674, from_text='ST_GeomFromEWKT',
                 name='geometry'))
    inserida_pnsb = db.Column(
        db.Boolean,
        nullable=False,
        info='Política Nacional de Segurança de Barragens')
    dpa = db.Column(
        db.SmallInteger,
        nullable=False,
        info='Dano Potencial Associado: (0) Nulo (1) Baixo (2) Médio (3) Alto')
    cri = db.Column(
        db.SmallInteger,
        nullable=False,
        info='Categoria de Risco: (0) Nulo (1) Baixo (2) Médio (3) Alto')
    paemb_url = db.Column(
        db.String(250),
        info='Plano de Ação de Emergência para Barragens de Mineração')
    nivel_emergencia = db.Column(db.SmallInteger,
                                 nullable=False,
                                 info='Níveis de emergência: 0, 1, 2, 3')
    situacao_operacional = db.Column(
        db.SmallInteger,
        nullable=False,
        info=
        'Situação operacional: (0) Em Construção (1) Em Operação (2) Desativada\n* Substitui o campo status'
    )
    complexo_minerario_id = db.Column(db.ForeignKey('complexo_minerario.id',
                                                    match='FULL'),
                                      nullable=False)

    complexo_minerario = db.relationship(
        'ComplexoMinerario',
        primaryjoin='Estrutura.complexo_minerario_id == ComplexoMinerario.id',
        backref='estruturas')

    def to_dict(self):
        # estrutura = {c.name: getattr(self, c.name) for c in self.__table__.columns}
        # estrutura['situacao_operacional'] = SITUACAO_OPERACIONAL[estrutura['situacao_operacional']]
        # return estrutura
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}
示例#3
0
class Categoria(db.Model):
    __tablename__ = 'categoria'

    id = db.Column(db.Integer,
                   primary_key=True,
                   server_default=db.FetchedValue())
    nome = db.Column(db.String(250), nullable=False)
    status = db.Column(db.SmallInteger,
                       nullable=False,
                       info='(0) Indisponível (1) Disponível')

    # def to_dict(self):
    #     return {c.name: getattr(self, c.name) for c in self.__table__.columns}

    def to_dict(self):
        categoria = {
            c.name: getattr(self, c.name)
            for c in self.__table__.columns
        }
        categoria['status'] = STATUS[categoria['status']]
        return categoria

    def to_dict_with_assets(self):
        categoria = self.to_dict()
        categoria['ativos'] = [ativo.to_dict() for ativo in self.ativos]
        return categoria
示例#4
0
class Ativo(db.Model):
    __tablename__ = 'ativo'

    id = db.Column(db.Integer,
                   primary_key=True,
                   server_default=db.FetchedValue())
    descricao = db.Column(db.String(250), nullable=False)
    quantidade = db.Column(db.Integer, nullable=False)
    status = db.Column(db.SmallInteger,
                       nullable=False,
                       info='(0) Indisponível (1) Disponível')
    categoria_id = db.Column(db.ForeignKey('categoria.id', match='FULL'),
                             nullable=False)

    categoria = db.relationship(
        'Categoria',
        primaryjoin='Ativo.categoria_id == Categoria.id',
        backref='ativos')
    complexo_minerarios = db.relationship('ComplexoMinerario',
                                          secondary='assoc_ativo_complexo',
                                          backref='ativos')

    def to_dict(self):
        ativo = {c.name: getattr(self, c.name) for c in self.__table__.columns}
        ativo['status'] = STATUS[ativo['status']]
        ativo['categoria'] = self.categoria.to_dict()
        del ativo['categoria_id']
        return ativo
示例#5
0
class ComplexoMinerario(db.Model):
    __tablename__ = 'complexo_minerario'

    id = db.Column(db.Integer,
                   primary_key=True,
                   server_default=db.FetchedValue())
    nome = db.Column(db.String(250))
    poligono = db.Column(
        Geometry('POLYGON', 4674, from_text='ST_GeomFromEWKT',
                 name='geometry'))
    lat = db.Column(db.Numeric(17, 14), nullable=False)
    long = db.Column(db.Numeric(17, 14), nullable=False)
    uf = db.Column(db.String(2), nullable=False)
    municipio = db.Column(db.String(250), nullable=False)
    situacao_operacional = db.Column(
        db.SmallInteger,
        nullable=False,
        info=
        'Situação operacional: (0) Em Construção (1) Em Operação (2) Desativada\n* Substitui o campo status'
    )

    def to_dict(self, complete=False, schedule=False):
        complexo_minerario = {
            c.name: getattr(self, c.name)
            for c in self.__table__.columns
        }
        complexo_minerario[
            'nome'] = self.nome if self.nome else 'Complexo Minerário de {0}'.format(
                self.municipio)
        complexo_minerario['lat_long'] = [float(self.lat), float(self.long)]
        # complexo_minerario['situacao_operacional'] = SITUACAO_OPERACIONAL[complexo_minerario['situacao_operacional']]
        del complexo_minerario['lat']
        del complexo_minerario['long']
        if complete:
            if schedule:
                del complexo_minerario['poligono']
            else:
                complexo_minerario['estruturas'] = sorted(
                    [estrutura.to_dict() for estrutura in self.estruturas],
                    key=itemgetter('id'))
            complexo_minerario['ativos'] = sorted([
                ativo.to_dict(maintenance=schedule)
                for ativo in self.assoc_ativo_complexos
            ],
                                                  key=itemgetter('ativo_id'))
        return complexo_minerario
示例#6
0
        # estrutura['situacao_operacional'] = SITUACAO_OPERACIONAL[estrutura['situacao_operacional']]
        # return estrutura
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}


t_geography_columns = db.Table('geography_columns',
                               db.Column('f_table_catalog', db.String),
                               db.Column('f_table_schema', db.String),
                               db.Column('f_table_name', db.String),
                               db.Column('f_geography_column', db.String),
                               db.Column('coord_dimension', db.Integer),
                               db.Column('srid', db.Integer),
                               db.Column('type', db.Text))

t_geometry_columns = db.Table('geometry_columns',
                              db.Column('f_table_catalog', db.String(256)),
                              db.Column('f_table_schema', db.String),
                              db.Column('f_table_name', db.String),
                              db.Column('f_geometry_column', db.String),
                              db.Column('coord_dimension', db.Integer),
                              db.Column('srid', db.Integer),
                              db.Column('type', db.String(30)))


class Manutencao(db.Model):
    __tablename__ = 'manutencao'
    __table_args__ = (db.ForeignKeyConstraint(
        ['complexo_minerario_id', 'ativo_id'], [
            'assoc_ativo_complexo.complexo_minerario_id',
            'assoc_ativo_complexo.ativo_id'
        ],