Пример #1
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
Пример #2
0
class AssocAtivoComplexo(db.Model):
    __tablename__ = 'assoc_ativo_complexo'

    complexo_minerario_id = db.Column(db.ForeignKey('complexo_minerario.id',
                                                    match='FULL'),
                                      primary_key=True,
                                      nullable=False)
    ativo_id = db.Column(db.ForeignKey('ativo.id', match='FULL'),
                         primary_key=True,
                         nullable=False)
    quantidade = db.Column(db.Integer, nullable=False)

    ativo = db.relationship(
        'Ativo',
        primaryjoin='AssocAtivoComplexo.ativo_id == Ativo.id',
        backref='assoc_ativo_complexos')
    complexo_minerario = db.relationship(
        'ComplexoMinerario',
        primaryjoin=
        'AssocAtivoComplexo.complexo_minerario_id == ComplexoMinerario.id',
        backref='assoc_ativo_complexos')

    def to_dict(self, maintenance=False):
        ativo = {c.name: getattr(self, c.name) for c in self.__table__.columns}
        ativo['descricao'] = self.ativo.descricao
        ativo['quantidade_disponivel'] = self.ativo.quantidade
        ativo['status'] = STATUS[self.ativo.status]
        ativo['categoria'] = self.ativo.categoria.to_dict()
        if maintenance:
            ativo['manutencoes'] = [
                manutencao.to_dict() for manutencao in self.manutencoes
            ]
        return ativo
Пример #3
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
Пример #4
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))
Пример #5
0
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'
        ],
        match='FULL'), )

    id = db.Column(db.Integer,
                   primary_key=True,
                   server_default=db.FetchedValue())
    descricao = db.Column(db.Text)
    data_hora = db.Column(db.DateTime, nullable=False)
    conclusao = db.Column(db.DateTime)
    complexo_minerario_id = db.Column(db.Integer, nullable=False)
    ativo_id = db.Column(db.Integer, nullable=False)

    complexo_minerario = db.relationship(
        'AssocAtivoComplexo',
        primaryjoin=
        'and_(Manutencao.complexo_minerario_id == AssocAtivoComplexo.complexo_minerario_id, Manutencao.ativo_id == AssocAtivoComplexo.ativo_id)',
        backref='manutencoes')

    def to_dict(self):
        manutencao = {
            c.name: getattr(self, c.name)
            for c in self.__table__.columns
        }
        manutencao['data_hora'] = manutencao['data_hora'].isoformat()
        manutencao['conclusao'] = manutencao['conclusao'].isoformat(
        ) if manutencao['conclusao'] else None
        return manutencao
Пример #6
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
Пример #7
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}
Пример #8
0
                                      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}


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)))