diff --git a/scripts/inicializa_grupos_autorizacoes.py b/scripts/inicializa_grupos_autorizacoes.py index 21d43808f..916e19912 100644 --- a/scripts/inicializa_grupos_autorizacoes.py +++ b/scripts/inicializa_grupos_autorizacoes.py @@ -1,188 +1,72 @@ +from django.apps import apps from django.contrib.auth.models import Group, Permission, User from django.contrib.contenttypes.models import ContentType +from sapl.settings import SAPL_APPS -def cria_grupos_permissoes(): - - if not Group.objects.filter("Teste"): - pass - - # Cria todos os grupos necessários para a aplicação - - op_geral = Group.objects.get_or_create(name="Operador Geral") - op_prot = Group.objects.get_or_create(name="Operador de Protocolo") - op_sessao = Group.objects.get_or_create(name="Operador de Sessão") - op_comissao = Group.objects.get_or_create(name="Operador de Comissão") - op_adm = Group.objects.get_or_create(name="Operador de Administração") - op_norma = Group.objects.get_or_create(name="Operador de Norma Jurídica") - op_materia = Group.objects.get_or_create( - name="Operador de Matéria Legislativa") - op_painel = Group.objects.get_or_create(name="Operador de Painel") - op_autor = Group.objects.get_or_create(name="Autor") - - op_geral = op_geral[0] - op_prot = op_prot[0] - op_sessao = op_sessao[0] - op_comissao = op_comissao[0] - op_adm = op_adm[0] - op_norma = op_norma[0] - op_materia = op_materia[0] - op_painel = op_painel[0] - op_autor = op_autor[0] - - # Base - - permissao_add_cl = Permission.objects.get( - name="Can add Casa Legislativa") - permissao_edit_cl = Permission.objects.get( - name="Can change Casa Legislativa") - permissao_remove_cl = Permission.objects.get( - name="Can delete Casa Legislativa") - - permissoes_base = [permissao_add_cl, - permissao_edit_cl, - permissao_remove_cl] - - # Comissao - - cts = ContentType.objects.filter(app_label='comissoes') - perms_comissoes = list(Permission.objects.filter(content_type__in=cts)) - - # Materia - - cts = ContentType.objects.filter(app_label='materia') - perms_materia = list(Permission.objects.filter(content_type__in=cts)) - - # Norma - - cts = ContentType.objects.filter(app_label='norma') - perms_norma = list(Permission.objects.filter(content_type__in=cts)) - # Painel +def cria_grupo_e_usuario_padrao(nome_grupo, nome_usuario, permissoes): - cts = ContentType.objects.filter(app_label='painel') - perms_painel = list(Permission.objects.filter(content_type__in=cts)) +('Operador de Sessão', ) - # Parlamentares - cts = ContentType.objects.filter(app_label='parlamentares') - perms_parlamentares = list(Permission.objects.filter(content_type__in=cts)) +def cria_grupos_permissoes(): - # ProtocoloADM e DOCADM + nomes_apps = ['base', 'parlamentares', 'comissoes', + 'materia', 'norma', 'sessao', 'painel'] + permissoes = {app: list(Permission.objects.filter( + content_type__in=ContentType.objects.filter(app_label=app))) + for app in nomes_apps} + # permissoes específicas para protocolo e documento administrativo cts = ContentType.objects.filter(app_label='protocoloadm') + permissoes['documento_administrativo'] = list( + Permission.objects.filter(content_type__in=cts)) - perms_docadm = list(Permission.objects.filter(content_type__in=cts)) + cts = cts.exclude(model__icontains='tramitacao').exclude( + model__icontains='documentoadministrativo') + permissoes['protocoloadm'] = list( + Permission.objects.filter(content_type__in=cts)) + nomes_apps.append('protocoloadm') - cts_exc1 = cts.filter(model__icontains='tramitacao') - cts_exc2 = cts.filter(model__icontains='documentoadministrativo') + for nome_app in nomes_apps: - cts = cts.exclude(id__in=[o.id for o in cts_exc1]) - cts = cts.exclude(id__in=[o.id for o in cts_exc2]) + if nome_app in {'base', 'parlamentares'}: + # pula apps que não têm grupo específico + continue - perms_protocoloadm = list(Permission.objects.filter(content_type__in=cts)) + nome_grupo = 'Operador de %s' % apps.get_app_config( + nome_app).verbose_name + grupo = Group.objects.get_or_create(name=nome_grupo)[0] - # Sessao + # configura permissoes do operador + for p in permissoes[nome_app]: + grupo.permissions.add(p) - cts = ContentType.objects.filter(app_label='sessao') - perms_sessao = list(Permission.objects.filter(content_type__in=cts)) + nome_usuario = 'operador_%s' % nome_app - # Painel + usuario = User.objects.get_or_create(username=nome_usuario)[0] + usuario.set_password('interlegis') + usuario.save() + grupo.user_set.add(usuario) - cts = ContentType.objects.filter(app_label='painel') - perms_painel = list(Permission.objects.filter(content_type__in=cts)) + # Operador Geral + grupo_geral = Group.objects.get_or_create(name='Operador Geral')[0] + for lista in permissoes.values(): + for p in lista: + grupo_geral.permissions.add(p) # Autor - - perms_autor = Permission.objects.get(name="Can add Proposição") - - # Configura Permissoes Operador de Protocolo - for p in perms_protocoloadm: - op_prot.permissions.add(p) - - # Configura Permissoes Operador de Sessao - for p in perms_sessao: - op_sessao.permissions.add(p) - - # Configura Permissoes Operador de Comissao - for p in perms_comissoes: - op_comissao.permissions.add(p) + # ..... + perms_autor = Permission.objects.get(name='Can add Proposição') + # .... + # Configura Permissoes Autor + op_autor.permissions.add(perms_autor) # Configura Permissoes Operador de Administracao + # ..... for p in perms_docadm: op_adm.permissions.add(p) - # Configura Permissoes Operador de Norma - for p in perms_norma: - op_norma.permissions.add(p) - - # Configura Permissoes Operador de Materia - for p in perms_materia: - op_materia.permissions.add(p) - - # Configura Permissoes Operador de Painel - for p in perms_painel: - op_painel.permissions.add(p) - - # Configura Permissoes Autor - op_autor.permissions.add(perms_autor) - - # Configura Permissoes Operador Geral - perms_op_geral = perms_protocoloadm + perms_sessao + perms_comissoes - perms_op_geral = perms_op_geral + perms_docadm + perms_norma - perms_op_geral = perms_op_geral + perms_materia - perms_op_geral = perms_op_geral + perms_parlamentares + perms_painel - perms_op_geral = perms_op_geral + permissoes_base - - for p in perms_op_geral: - op_geral.permissions.add(p) - op_geral.permissions.add(perms_autor) - - # Cria usuarios - op_geral_user = User.objects.get_or_create(username='op_geral')[0] - op_geral_user.set_password('interlegis') - op_geral_user.save() - op_geral.user_set.add(op_geral_user) - - op_materia_user = User.objects.get_or_create(username='op_materia')[0] - op_materia_user.set_password('interlegis') - op_materia_user.save() - op_materia.user_set.add(op_materia_user) - - op_prot_user = User.objects.get_or_create(username='op_protocolo')[0] - op_prot_user.set_password('interlegis') - op_prot_user.save() - op_prot.user_set.add(op_prot_user) - - op_sessao_user = User.objects.get_or_create(username='op_sessao')[0] - op_sessao_user.set_password('interlegis') - op_sessao_user.save() - op_sessao.user_set.add(op_sessao_user) - - op_comissao_user = User.objects.get_or_create(username='op_comissao')[0] - op_comissao_user.set_password('interlegis') - op_comissao_user.save() - op_comissao.user_set.add(op_comissao_user) - - op_adm_user = User.objects.get_or_create(username='op_adm')[0] - op_adm_user.set_password('interlegis') - op_adm_user.save() - op_adm.user_set.add(op_adm_user) - - op_norma_user = User.objects.get_or_create(username='op_norma')[0] - op_norma_user.set_password('interlegis') - op_norma_user.save() - op_norma.user_set.add(op_norma_user) - - op_painel_user = User.objects.get_or_create(username='op_painel')[0] - op_painel_user.set_password('interlegis') - op_painel_user.save() - op_painel.user_set.add(op_norma_user) - - op_autor_user = User.objects.get_or_create(username='op_autor')[0] - op_autor_user.set_password('interlegis') - op_autor_user.save() - op_autor.user_set.add(op_autor_user) - if __name__ == '__main__': cria_grupos_permissoes()