From cb311f731e8f2f4190c518531f1bbf4f813842ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Fri, 14 Dec 2018 17:52:35 -0200 Subject: [PATCH] =?UTF-8?q?Adicionar=20identifica=C3=A7=C3=A3o=20de=20prot?= =?UTF-8?q?ocolos=20duplicados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/base/urls.py | 12 ++++- sapl/base/views.py | 50 +++++++++++++++++++ .../templates/base/lista_inconsistencias.html | 22 ++++++++ .../templates/base/protocolos_duplicados.html | 32 ++++++++++++ sapl/templates/navbar.yaml | 3 ++ 5 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 sapl/templates/base/lista_inconsistencias.html create mode 100644 sapl/templates/base/protocolos_duplicados.html diff --git a/sapl/base/urls.py b/sapl/base/urls.py index ae4add258..92337e779 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -16,7 +16,7 @@ from .forms import LoginForm, NovaSenhaForm, RecuperarSenhaForm from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, CreateUsuarioView, DeleteUsuarioView, EditUsuarioView, HelpTopicView, ListarUsuarioView, LogotipoView, - RelatorioAtasView, RelatorioAudienciaView, + RelatorioAtasView, RelatorioAudienciaView, RelatorioDataFimPrazoTramitacaoView, RelatorioHistoricoTramitacaoView, RelatorioMateriasPorAnoAutorTipoView, @@ -27,7 +27,8 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, RelatorioNormasPublicadasMesView, RelatorioNormasVigenciaView, EstatisticasAcessoNormas, - RelatoriosListView) + RelatoriosListView, + ListarInconsistenciasView, ListarProtocolosDuplicadosView) app_name = AppConfig.name @@ -127,6 +128,13 @@ urlpatterns = [ '(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})$', ConfirmarEmailView.as_view(), name='confirmar_email'), + url(r'^sistema/inconsistencias/$', + ListarInconsistenciasView.as_view(), + name='lista_inconsistencias'), + + url(r'^sistema/inconsistencias/protocolos_duplicados$', + ListarProtocolosDuplicadosView.as_view(), + name='lista_protocolos_duplicados'), # todos os sublinks de sistema devem vir acima deste url(r'^sistema/$', permission_required('base.view_tabelas_auxiliares') diff --git a/sapl/base/views.py b/sapl/base/views.py index c45cb8703..2d9eece8f 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -35,6 +35,7 @@ from sapl.crud.base import CrudAux, make_pagination from sapl.materia.models import (Autoria, MateriaLegislativa, TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao) from sapl.norma.models import (NormaJuridica, NormaEstatisticas) +from sapl.protocoloadm.models import Protocolo from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria, SessaoPlenariaPresenca) from sapl.utils import (parlamentares_ativos, @@ -915,6 +916,55 @@ class EstatisticasAcessoNormas(TemplateView): return self.render_to_response(context) +class ListarInconsistenciasView(PermissionRequiredMixin, ListView): + model = get_user_model() + template_name = 'base/lista_inconsistencias.html' + context_object_name = 'tabela_inconsistencias' + permission_required = ('base.list_appconfig',) + + def get_queryset(self): + tabela = {} + tabela['Protocolos Duplicados'] = len(protocolo_duplicados()) + + t = tabela.items() + return t + + +def protocolo_duplicados(): + protocolos = {} + for p in Protocolo.objects.all(): + key = "{}/{}".format(p.numero, p.ano) + val = protocolos.get(key, list()) + val.append(p) + protocolos[key] = val + + lista_duplicados = [v for (k, v) in protocolos.items() if len(v) > 1] + return [(v[0], len(v)) for v in lista_duplicados] + + +class ListarProtocolosDuplicadosView(PermissionRequiredMixin, ListView): + model = get_user_model() + template_name = 'base/protocolos_duplicados.html' + context_object_name = 'protocolos_duplicados' + permission_required = ('base.list_appconfig',) + paginate_by = 10 + + def get_queryset(self): + return protocolo_duplicados() + + def get_context_data(self, **kwargs): + context = super( + ListarProtocolosDuplicadosView, self).get_context_data(**kwargs) + paginator = context['paginator'] + page_obj = context['page_obj'] + context['page_range'] = make_pagination( + page_obj.number, paginator.num_pages) + context[ + 'NO_ENTRIES_MSG' + ] = 'Nenhum protocolo duplicado cadastrado no sistema.' + return context + + class ListarUsuarioView(PermissionRequiredMixin, ListView): model = get_user_model() template_name = 'auth/user_list.html' diff --git a/sapl/templates/base/lista_inconsistencias.html b/sapl/templates/base/lista_inconsistencias.html new file mode 100644 index 000000000..5dd93b240 --- /dev/null +++ b/sapl/templates/base/lista_inconsistencias.html @@ -0,0 +1,22 @@ +{% extends "base.html" %} +{% load i18n %} +{% load tz %} +{% load common_tags %} +{% block base_content %} +
+

Lista de Inconsistências

+ + + {% for campo, valor in tabela_inconsistencias %} + + + + + {% endfor %} + +
+ {{ campo }} + {{ valor }}
+
+ {% include 'paginacao.html'%} +{% endblock base_content %} \ No newline at end of file diff --git a/sapl/templates/base/protocolos_duplicados.html b/sapl/templates/base/protocolos_duplicados.html new file mode 100644 index 000000000..80c3613da --- /dev/null +++ b/sapl/templates/base/protocolos_duplicados.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} +{% load i18n %} +{% load tz %} +{% load common_tags %} +{% block base_content %} +
+

Lista de Protocolos Duplicados

+ {% if not protocolos_duplicados %} +

{{ NO_ENTRIES_MSG }}

+ {% else %} + + + + + + + + + {% for protocolo, quantidade in protocolos_duplicados %} + + + + + {% endfor %} + +
ProtocoloQuantidade
+ {{ protocolo }} + {{ quantidade }}
+ {% endif %} +
+ {% include 'paginacao.html'%} +{% endblock base_content %} \ No newline at end of file diff --git a/sapl/templates/navbar.yaml b/sapl/templates/navbar.yaml index b80cb7acd..3d539eb0c 100644 --- a/sapl/templates/navbar.yaml +++ b/sapl/templates/navbar.yaml @@ -75,6 +75,9 @@ - title: {% trans 'Administração de Usuários' %} url: {% url 'sapl.base:user_list' %} check_permission: user.is_superuser + - title: {% trans 'Inconsistências da Aplicação' %} + url: {% url 'sapl.base:lista_inconsistencias' %} + check_permission: user.is_superuser {% comment %}