diff --git a/sapl/norma/models.py b/sapl/norma/models.py index b6c63b9dc..ee8522746 100644 --- a/sapl/norma/models.py +++ b/sapl/norma/models.py @@ -74,6 +74,21 @@ class NormaJuridicaManager(models.Manager): use_for_related_fields = True + def normas_sem_textos_articulados(self): + qs = self.get_queryset() + qs = qs.filter(texto_articulado__isnull=True) + return qs + + def normas_com_textos_articulados_publicados(self): + qs = self.get_queryset() + qs = qs.filter( + texto_articulado__editable_only_by_owners=False, + texto_articulado__privacidade=0, + texto_articulado__isnull=False + ) + + return qs + def normas_com_textos_articulados_pendentes(self): qs = self.get_queryset() qs = qs.filter( diff --git a/sapl/norma/views.py b/sapl/norma/views.py index c53ac63a9..dfb670f74 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -250,6 +250,7 @@ class NormaCrud(Crud): def get(self, request, *args, **kwargs): if AppConfig.attr('texto_articulado_norma'): + self.status = self.request.GET.get('status', '') return Crud.ListView.get(self, request, *args, **kwargs) else: url = self.get_redirect_url(*args, **kwargs) @@ -269,14 +270,25 @@ class NormaCrud(Crud): return reverse('%s:%s' % (namespace, 'norma_pesquisa')) def get_queryset(self): - qs = NormaJuridica.objects.normas_com_textos_articulados_pendentes() + if self.status == 'pendente': + qs = NormaJuridica.objects.normas_com_textos_articulados_pendentes() + elif self.status == 'publico': + qs = NormaJuridica.objects.normas_com_textos_articulados_publicados() + else: + qs = NormaJuridica.objects.normas_sem_textos_articulados() return qs.order_by('-texto_articulado__privacidade', '-ano', '-numero') def get_context_data(self, **kwargs): context = Crud.ListView.get_context_data(self, **kwargs) - context['title'] = 'Normas Jurídicas com Textos Articulados não publicados' + if self.status == 'pendente': + context['title'] = 'Normas Jurídicas com Textos Articulados não publicados' + elif self.status == 'publico': + context['title'] = 'Normas Jurídicas com Textos Articulados publicados' + else: + context['title'] = 'Normas Jurídicas sem Textos Articulados' + return context @classmethod diff --git a/sapl/templates/navbar.yaml b/sapl/templates/navbar.yaml index aee41fe93..3d323c2de 100644 --- a/sapl/templates/navbar.yaml +++ b/sapl/templates/navbar.yaml @@ -75,6 +75,16 @@ url: 'sapl.norma:normajuridica_create' check_permission: norma.add_normajuridica + - title: {% trans 'Textos Articulados Publicados' %} + url: {% url 'sapl.norma:normajuridica_list'%}?status=publico + check_permission: compilacao.change_dispositivo_edicao_dinamica + - title: {% trans 'Textos Articulados Pendentes' %} + url: {% url 'sapl.norma:normajuridica_list' %}?status=pendente + check_permission: compilacao.change_dispositivo_edicao_dinamica + - title: {% trans 'Textos Articulados não cadastrados' %} + url: {% url 'sapl.norma:normajuridica_list' %}?status=sem_texto + check_permission: compilacao.change_dispositivo_edicao_dinamica + - title: {% trans 'Sistema' %} check_permission: base.menu_sistemas children: @@ -86,7 +96,7 @@ check_permission: user.is_superuser - title: {% trans 'Inconsistências de Dados' %} url: {% url 'sapl.base:lista_inconsistencias' %} - check_permission: user.is_superuser + check_permission: user.is_superuser {% comment %}