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))
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}
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
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
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
# 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' ],