front_ponto_eletronico/seeds/users_seed.py
2025-03-17 15:00:51 -03:00

70 lines
2.7 KiB
Python

from extensions import db
from models.user import User
from sqlalchemy.exc import IntegrityError
def seed_users():
# Lista de usuários para criar
users_data = [
{
"username": "admin",
"email": "admin@exemplo.com",
"phone": "123456789",
"password": "senha123"
},
{
"username": "user1",
"email": "user1@exemplo.com",
"phone": "987654321",
"password": "senha456"
},
]
users_added = False # Flag para verificar se algum usuário foi adicionado
for user_data in users_data:
try:
# Verifica se o usuário já existe pelo username ou email
existing_user = User.query.filter(
(User.username == user_data["username"]) |
(User.email == user_data["email"])
).first()
if existing_user:
print(f"Usuário com username '{user_data['username']}' ou email '{user_data['email']}' já existe!")
continue # Pula para o próximo usuário caso já exista
# Caso o usuário não exista, cria um novo
user = User(
username=user_data["username"],
email=user_data["email"],
phone=user_data["phone"],
)
user.set_password(user_data["password"]) # Gerar o hash da senha
db.session.add(user)
print(f"Usuário {user_data['username']} criado com sucesso!")
users_added = True # Marca que um usuário foi adicionado
except IntegrityError as e:
db.session.rollback() # Reverte a transação em caso de erro
if 'phone' in str(e.orig):
print(f"Erro: O número de telefone '{user_data['phone']}' já está registrado. Tente outro número.")
elif 'email' in str(e.orig):
print(f"Erro: O email '{user_data['email']}' já está registrado. Tente outro email.")
else:
print(f"Erro ao criar o usuário {user_data['username']}. Ocorreu um erro interno.")
except Exception as e:
db.session.rollback() # Reverte a transação em caso de erro
print(f"Erro ao criar o usuário {user_data['username']}: {e}")
# Commit só se algum usuário foi realmente adicionado
if users_added:
try:
db.session.commit() # Commit após adicionar os novos usuários
print("Usuários criados com sucesso!")
except Exception as e:
print(f"Erro ao salvar os dados. Tente novamente mais tarde.")
db.session.rollback()
else:
print("Nenhum usuário foi adicionado, nada para salvar.")