diff --git a/sapl/materia/views.py b/sapl/materia/views.py index a720bbfa4..4f95e87e8 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1766,6 +1766,7 @@ class DocumentoAcessorioCrud(MasterDetailCrud): u = self.request.user is_autor = False is_presidente = False + is_grupo_presidente = False if u.is_authenticated: materia = self.object.materia for autoria in materia.autoria_set.all(): @@ -1803,11 +1804,19 @@ class DocumentoAcessorioCrud(MasterDetailCrud): operadores=u ).exists() + # Verifica também pelo grupo "Presidente da Mesa Diretora" + from sapl.rules import SGVP_GROUP_PRESIDENTE_MESA + is_grupo_presidente = u.groups.filter( + name=SGVP_GROUP_PRESIDENTE_MESA + ).exists() + context['is_autor'] = is_autor - context['pode_assinar'] = is_autor or is_presidente or ( - u.is_authenticated and ( - u.is_superuser or - u.has_perm('materia.change_documentoacessorio') + context['pode_assinar'] = ( + is_autor or is_presidente or is_grupo_presidente or ( + u.is_authenticated and ( + u.is_superuser or + u.has_perm('materia.change_documentoacessorio') + ) ) ) return context diff --git a/sapl/rules/__init__.py b/sapl/rules/__init__.py index e7723b598..223046a6a 100644 --- a/sapl/rules/__init__.py +++ b/sapl/rules/__init__.py @@ -66,6 +66,7 @@ SGVP_GROUP_PAINEL = _("Operador de Painel Eletrônico") SGVP_GROUP_GERAL = _("Operador Geral") SGVP_GROUP_AUTOR = _("Autor") SGVP_GROUP_VOTANTE = _("Votante") +SGVP_GROUP_PRESIDENTE_MESA = _("Presidente da Mesa Diretora") # TODO - funcionalidade ainda não existe mas está aqui para efeito de anotação SGVP_GROUP_LOGIN_SOCIAL = _("Usuários com Login Social") @@ -86,6 +87,7 @@ SGVP_GROUPS = [ SGVP_GROUP_GERAL, SGVP_GROUP_AUTOR, SGVP_GROUP_VOTANTE, + SGVP_GROUP_PRESIDENTE_MESA, SGVP_GROUP_LOGIN_SOCIAL, SGVP_GROUP_ANONYMOUS, ] diff --git a/sapl/rules/map_rules.py b/sapl/rules/map_rules.py index 47c444ef6..3f86ada1f 100644 --- a/sapl/rules/map_rules.py +++ b/sapl/rules/map_rules.py @@ -1,4 +1,4 @@ -from sapl.rules import SGVP_GROUP_LOGIN_SOCIAL +from sapl.rules import SGVP_GROUP_LOGIN_SOCIAL, SGVP_GROUP_PRESIDENTE_MESA from sapl.rules.group_administrativo import rules_group_administrativo from sapl.rules.group_anonymous import rules_group_anonymous from sapl.rules.group_audiencia import rules_group_audiencia @@ -12,6 +12,11 @@ from sapl.rules.group_protocolo import rules_group_protocolo from sapl.rules.group_sessao import rules_group_sessao from sapl.rules.group_votante import rules_group_votante +rules_group_presidente_mesa = { + 'group': SGVP_GROUP_PRESIDENTE_MESA, + 'rules': [] +} + rules_group_login_social = { 'group': SGVP_GROUP_LOGIN_SOCIAL, 'rules': [] @@ -93,6 +98,7 @@ rules_patterns = [ rules_group_geral, rules_group_autor, rules_group_votante, + rules_group_presidente_mesa, rules_group_anonymous, # anotação para validação do teste de rules rules_group_login_social # TODO não implementado