front_ponto_eletronico/seeds/users_seed.py
2025-05-06 17:27:02 -03:00

99 lines
3.6 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 = [
#---login farmacia 1-----
{
"username": "admin",
"email": "admin@exemplo.com",
"password": "senha123",
"service_instance_id": 1
},
{
"username": "user1",
"email": "user1@exemplo.com",
"password": "senha456",
"service_instance_id": 1
},
#-----login farmacia 2--------
{
"username": "fogo_admin",
"email": "fogodechaoadmin@exemplo.com",
"password": "senha123",
"service_instance_id": 2
},
{
"username": "fogo_user_2",
"email": "fogodechaouser2@exemplo.com",
"password": "senha456",
"service_instance_id": 2
},
#----------login farmacia 3----------
{
"username": "sabin_admin",
"email": "sabinadmin@exemplo.com",
"password": "senha123",
"service_instance_id": 3
},
{
"username": "sabin_user_2",
"email": "sabinuser2@exemplo.com",
"password": "senha456",
"service_instance_id": 3
},
]
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"],
service_instance_id=user_data["service_instance_id"]
)
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.")