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(): user = User.query.first() # Obtém o primeiro usuário para fins de exemplo 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 user 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'}, ] # 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.")