front_ponto_eletronico/seeds/service_role_permissions.py
2025-03-31 12:01:39 -03:00

68 lines
3.7 KiB
Python

from models.service_roles import ServiceRole
from models.service_role_permission import ServiceRolePermission
from models.service_instance import ServiceInstance
from models.permission import Permission
from models.user import User
from extensions import db
def seed_service_role_permissions():
users = User.query.filter(User.id.in_([1, 3, 5])).all() # Alterado para considerar usuarios admins
service_instance = ServiceInstance.query.first() # Obtém a primeira instância de serviço
# Verifica se há um usuário e uma instância de serviço
if users and service_instance:
# Define as permissões que você deseja atribuir
permissions = [
{'name': "Read Access", 'description': "Permission to read data", 'type': 'read'},
{'name': "Write Access", 'description': "Permission to write data", 'type': 'write'},
{'name': "Edit Access", 'description': "Permission to edit data", 'type': 'edit'},
{'name': "Delete Access", 'description': "Permission to delete data", 'type': 'delete'},
]
for user in users:
# Itera sobre todos os service roles (1 a 10)
for service_role_id in range(1, 11): # Para cada role de 1 até 10
service_role = ServiceRole.query.get(service_role_id)
if not service_role:
print(f"ServiceRole com id {service_role_id} não encontrado.")
continue # Se o service_role não existir, pula
# Para cada permissão definida, associa ao service role
for perm in permissions:
# Verifica se a permissão já existe no banco de dados
existing_permission = Permission.query.filter_by(name=perm['name']).first()
if not existing_permission:
# Se a permissão não existir, cria e adiciona ao banco
permission = Permission(name=perm['name'], description=perm['description'])
db.session.add(permission)
db.session.commit()
print(f"Permissão '{perm['name']}' criada com sucesso.")
else:
permission = existing_permission
# Verifica se a permissão de papel de serviço já existe
existing_permission_role = ServiceRolePermission.query.filter_by(
service_role_id=service_role.id,
service_instance_id=service_instance.id,
permission_id=permission.id,
user_id=user.id
).first()
if not existing_permission_role:
# Se a permissão de papel de serviço não existir, cria e adiciona ao banco
service_role_permission = ServiceRolePermission(
service_role_id=service_role.id,
service_instance_id=service_instance.id,
permission_id=permission.id,
permission_type=perm['type'], # Definindo o tipo de permissão (read, write, etc.)
user_id=user.id
)
db.session.add(service_role_permission)
db.session.commit()
print(f"Permissão de papel de serviço '{perm['name']}' atribuída com sucesso para o role '{service_role.name}'.")
else:
print(f"Permissão de papel de serviço '{perm['name']}' já atribuída para o role '{service_role.name}'.")
else:
print("Usuário ou instância de serviço não encontrados.")