예제 #1
0
class Pessoa(db.Model):
    id_pessoa = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(100), nullable=False)
    cpf = db.Column(db.String(11), nullable=False)
    email = db.Column(db.String(50), nullable=False)
    candidatos = db.relationship('Candidato', backref='pessoa', lazy=True)
    eleitor = db.relationship('Eleitor', backref='pessoa', uselist=False)
    login = db.relationship('Login',
                            backref='pessoa',
                            lazy=True,
                            uselist=False)

    def __repr__(self):
        return f'idPessoa: {self.id_pessoa}, nome: {self.nome}'

    def to_json(self):
        return {
            'idPessoa': self.id_pessoa,
            'nome': self.nome,
            'cpf': self.cpf,
            'usuario': self.login.usuario,
            'eleitor': self.eleitor.to_json(),
            'email': self.email,
            'perfis': [p.to_json() for p in self.login.perfis]
        }

    def campos_consulta(self):
        return {
            'idPessoa': self.id_pessoa,
            'nome': self.nome,
            'cpf': self.cpf,
            'numeroInscricao': self.eleitor.numero_inscricao,
            'cidade': self.eleitor.cidade.to_json()
        }
예제 #2
0
class Eleicao(db.Model):
    id_eleicao = db.Column(db.Integer, primary_key=True)
    titulo = db.Column(db.String(50), nullable=False, unique=True)
    observacao = db.Column(db.Text)
    confirmada = db.Column(db.Boolean, default=False)
    turnos = db.relationship('Turno', backref='eleicao', lazy=True)

    def __repr__(self):
        return f'idEleicao: {self.id_eleicao}, título: {self.titulo}'

    def to_json(self):
        return {
            'idEleicao': self.id_eleicao,
            'titulo': self.titulo,
            'observacao': self.observacao,
            'confirmada': self.confirmada,
            'turnos': [t.to_json() for t in self.turnos]
        }

    def campos_consulta(self):
        return {
            'idEleicao': self.id_eleicao,
            'titulo': self.titulo,
            'data': str(self.turnos[0].inicio)
        }

    def turno_by_id(self, id_turno):
        turnos = [t for t in self.turnos if t.id_turno == id_turno]
        return turnos[0] if len(turnos) == 1 else Turno()
예제 #3
0
class Cidade(db.Model):
    id_cidade = db.Column(db.Integer, primary_key=True)
    id_estado = db.Column(db.Integer,
                          db.ForeignKey('estado.id_estado'),
                          nullable=False)
    nome = db.Column(db.String(100), nullable=False)
    turno_cargo_regioes = db.relationship('TurnoCargoRegiao',
                                          backref='cidade',
                                          lazy=True)
    eleitores = db.relationship('Eleitor', backref='cidade', lazy=True)
    votos_encriptados = db.relationship('VotoEncriptado',
                                        backref='cidade',
                                        lazy=True)
    votos_apurados = db.relationship('VotoApurado',
                                     backref='cidade',
                                     lazy=True)

    def __repr__(self):
        return f'idCidade: {self.id_cidade}, nome: {self.nome}'

    def to_json(self):
        return {
            'idCidade': self.id_cidade,
            'nome': self.nome,
            'estado': self.estado.to_json()
        }
예제 #4
0
class Estado(db.Model):
    id_estado = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(100), nullable=False)
    sigla = db.Column(db.String(2), nullable=False)
    cidades = db.relationship('Cidade', backref='estado', lazy=True)
    turno_cargo_regioes = db.relationship('TurnoCargoRegiao',
                                          backref='estado',
                                          lazy=True)

    def __repr__(self):
        return f'idEstado: {self.id_estado}, nome: {self.nome}'

    def to_json(self):
        return {
            'idEstado': self.id_estado,
            'nome': self.nome,
            'sigla': self.sigla
        }
예제 #5
0
class Perfil(db.Model):
    id_perfil = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(25), nullable=False, unique=True)

    def __repr__(self):
        return f'idPerfil: {self.id_perfil}, nome: {self.nome}'

    def to_json(self):
        return {'idPerfil': self.id_perfil, 'nome': self.nome}
예제 #6
0
class Partido(db.Model):
    id_partido = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(50), nullable=False, unique=True)
    sigla = db.Column(db.String(10), nullable=False, unique=True)
    numero_partido = db.Column(db.Integer, nullable=False, unique=True)
    candidatos = db.relationship('Candidato', backref='partido', lazy=True)
    coligacoes = db.relationship('Coligacao', secondary=coligacao_partido)

    def __repr__(self):
        return f'idPartido: {self.id_partido}, nome: {self.nome}, sigla: {self.sigla}'

    def to_json(self):
        return {
            'idPartido': self.id_partido,
            'nome': self.nome,
            'sigla': self.sigla,
            'numeroPartido': self.numero_partido
        }
예제 #7
0
class TipoCargo(db.Model):
    id_tipo_cargo = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(20), nullable=False, unique=True)
    cargos = db.relationship('Cargo', backref='tipoCargo', lazy=True)

    def __repr__(self):
        return f'idTipoCargo: {self.id_tipo_cargo}, nome: {self.nome}'

    def to_json(self):
        return {'idTipoCargo': self.id_tipo_cargo, 'nome': self.nome}
예제 #8
0
class Login(db.Model):
    id_login = db.Column(db.Integer, primary_key=True)
    usuario = db.Column(db.String(50), nullable=False, unique=True)
    senha = db.Column(db.String(100), nullable=False)
    id_pessoa = db.Column(db.Integer,
                          db.ForeignKey('pessoa.id_pessoa'),
                          nullable=False)
    perfis = db.relationship('Perfil', secondary=login_perfil)

    def __repr__(self):
        return f'idLogin: {self.id_login}, usuário: {self.usuario}'

    def has_perfil(self, perfil):
        return len([p for p in self.perfis if p.nome == perfil]) > 0

    def to_json(self):
        return {
            'pessoa': self.pessoa.to_json(),
            'perfis': [perfil.to_json() for perfil in self.perfis]
        }
예제 #9
0
class Eleitor(db.Model):
    id_eleitor = db.Column(db.Integer, primary_key=True)
    id_pessoa = db.Column(db.Integer,
                          db.ForeignKey('pessoa.id_pessoa'),
                          nullable=False)
    zona_eleitoral = db.Column(db.String(3), nullable=False)
    secao = db.Column(db.String(4), nullable=False)
    numero_inscricao = db.Column(db.String(12), nullable=False, unique=True)
    id_cidade = db.Column(db.Integer,
                          db.ForeignKey('cidade.id_cidade'),
                          nullable=False)
    eleitor_turnos = db.relationship('EleitorTurno', backref='eleitor')

    def __repr__(self):
        return f'idEleitor: {self.id_eleitor}, número inscrição: {self.numero_inscricao}'

    def to_json(self):
        return {
            'idEleitor': self.id_eleitor,
            'zonaEleitoral': self.zona_eleitoral,
            'numeroInscricao': self.numero_inscricao,
            'secao': self.secao,
            'cidade': self.cidade.to_json()
        }
예제 #10
0
class Cargo(db.Model):
    id_cargo = db.Column(db.Integer, primary_key=True)
    id_tipo_cargo = db.Column(db.Integer,
                              db.ForeignKey('tipo_cargo.id_tipo_cargo'),
                              nullable=False)
    nome = db.Column(db.String(20), nullable=False, unique=True)
    max_votos = db.Column(db.Integer, nullable=False)
    tam_numero_candidato = db.Column(db.Integer, nullable=False)
    sistema_eleicao = db.Column(db.String(30), nullable=False)
    permite_segundo_turno = db.Column(db.Boolean, nullable=False)
    turnosCargos = db.relationship('TurnoCargo', backref='cargo', lazy=True)

    def __repr__(self):
        return f'idCargo: {self.id_cargo}, nome: {self.nome}'

    def to_json(self):
        return {
            'idCargo': self.id_cargo,
            'nome': self.nome,
            'sistemaEleicao': self.sistema_eleicao,
            'permiteSegundoTurno': self.permite_segundo_turno,
            'tipoCargo': self.tipoCargo.nome,
            'tamNumeroCandiato': self.tam_numero_candidato
        }
예제 #11
0
class Coligacao(db.Model):
    id_coligacao = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(100), nullable=False)
    id_eleicao = db.Column(db.Integer,
                           db.ForeignKey('eleicao.id_eleicao'),
                           nullable=False)
    partidos = db.relationship('Partido', secondary=coligacao_partido)
    id_cidade = db.Column(db.Integer, db.ForeignKey('cidade.id_cidade'))
    id_estado = db.Column(db.Integer, db.ForeignKey('estado.id_estado'))

    def __repr__(self):
        return f'idColigacao: {self.id_coligacao}, nome: {self.nome}'

    def to_json(self):
        return {
            'idColigacao': self.id_coligacao,
            'nome': self.nome,
            'idEleicao': self.id_eleicao,
            'partidos': [p.to_json() for p in self.partidos]
        }
예제 #12
0
class Candidato(db.Model):
    id_candidato = db.Column(db.Integer, primary_key=True)
    numero = db.Column(db.Integer, nullable=False)
    id_partido = db.Column(db.Integer,
                           db.ForeignKey('partido.id_partido'),
                           nullable=False)
    id_turno_cargo_regiao = db.Column(
        db.Integer,
        db.ForeignKey('turno_cargo_regiao.id_turno_cargo_regiao'),
        nullable=False)
    id_candidato_principal = db.Column(db.Integer,
                                       db.ForeignKey('candidato.id_candidato'))
    id_pessoa = db.Column(db.Integer,
                          db.ForeignKey('pessoa.id_pessoa'),
                          nullable=False)
    vice = db.relationship('Candidato',
                           backref=db.backref(
                               'candidato_principal',
                               remote_side='Candidato.id_candidato',
                               uselist=False),
                           uselist=False)
    votos = db.relationship('VotoApurado', backref='candidato', lazy=True)
    qt_votos = db.Column(db.Integer, nullable=False, default=0)
    situacao = db.Column(db.String(50), nullable=False, default='Não Eleito')

    def __repr__(self):
        return f'idCandidato: {self.id_candidato}, número: {self.numero}'

    def to_json(self):
        return {
            'idCandidato': self.id_candidato,
            'numero': self.numero,
            'partido': self.partido.to_json(),
            'turnoCargoRegiao': self.turnoCargoRegiao.to_json(),
            'pessoa': self.pessoa.to_json(),
            'situacao': self.situacao,
            'votos': self.qt_votos if self.qt_votos != 0 else len(self.votos),
            'viceCandidato':
            self.vice.to_json() if self.vice is not None else None
        }