Melhorada interface dos formulários. Adicionado a opção de editar os Militantes direto da Lista

This commit is contained in:
LS
2025-02-20 10:39:31 -03:00
parent 765688df1f
commit 37d45e250f
14 changed files with 341 additions and 84 deletions

View File

@@ -1,39 +1,31 @@
import mysql.connector
from mysql.connector import Error
# from config.db_config import db_config
from sqlalchemy import create_engine, Column, Integer, String, Boolean, Numeric, Date, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('sqlite:///database.db', echo=True)
Base = declarative_base()
SessionLocal = sessionmaker(bind=engine)
def get_db_connection(db_config):
try:
connection = mysql.connector.connect(**db_config)
return connection
except Error as e:
print(f"Error connecting to database: {e}")
return None
def get_db_connection():
"""
Retorna uma nova sessão do banco de dados
"""
return SessionLocal()
def execute_query(query, params=None):
connection = get_db_connection('')
if connection is None:
return None
"""
Executa uma query usando SQLAlchemy
"""
session = get_db_connection()
try:
cursor = connection.cursor(dictionary=True)
cursor.execute(query, params)
connection.commit()
return cursor
except Error as e:
print(f"Error executing query: {e}")
return None
result = session.execute(query, params)
session.commit()
return result
except Exception as e:
session.rollback()
raise e
finally:
if connection.is_connected():
cursor.close()
connection.close()
session.close()
class Militante(Base):
__tablename__ = 'militantes'

34
functions/validations.py Normal file
View File

@@ -0,0 +1,34 @@
def validar_cpf(cpf):
"""
Valida um CPF seguindo as regras do governo brasileiro.
Retorna True se o CPF é válido, False caso contrário.
"""
# Remove caracteres não numéricos
cpf = ''.join(filter(str.isdigit, cpf))
# Verifica se tem 11 dígitos
if len(cpf) != 11:
return False
# Verifica se todos os dígitos são iguais
if len(set(cpf)) == 1:
return False
# Calcula primeiro dígito verificador
soma = 0
for i in range(9):
soma += int(cpf[i]) * (10 - i)
resto = soma % 11
digito1 = 0 if resto < 2 else 11 - resto
if int(cpf[9]) != digito1:
return False
# Calcula segundo dígito verificador
soma = 0
for i in range(10):
soma += int(cpf[i]) * (11 - i)
resto = soma % 11
digito2 = 0 if resto < 2 else 11 - resto
return int(cpf[10]) == digito2