diff --git a/sapl/base/urls.py b/sapl/base/urls.py index 92337e779..a2e8dd33a 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -131,10 +131,12 @@ urlpatterns = [ url(r'^sistema/inconsistencias/$', ListarInconsistenciasView.as_view(), name='lista_inconsistencias'), - url(r'^sistema/inconsistencias/protocolos_duplicados$', ListarProtocolosDuplicadosView.as_view(), name='lista_protocolos_duplicados'), + url(r'^sistema/inconsistencias/protocolos_com_materias$', + ListarProtocolosComMateriasView.as_view(), + name='lista_protocolos_com_materias'), # 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 2d9eece8f..dd94ac8d2 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -923,14 +923,55 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView): permission_required = ('base.list_appconfig',) def get_queryset(self): - tabela = {} - tabela['Protocolos Duplicados'] = len(protocolo_duplicados()) + tabela = [] + tabela.append( + ('protocolos_duplicados', + 'Protocolos duplicados', + len(protocolos_duplicados())) + ) + tabela.append( + ('protocolos_com_materias', + 'Protocolos que excedem o limite de matérias vinculadas', + len(protocolos_com_materias())) + ) + + return tabela + + +def protocolos_com_materias(): + protocolos = [] + for protocolo in Protocolo.objects.all(): + materias_protocolo = MateriaLegislativa.objects.filter( + ano=protocolo.ano, numero_protocolo=protocolo.numero) + if len(materias_protocolo) > 1: + protocolos.append((protocolo, len(materias_protocolo))) + return protocolos + + +class ListarProtocolosComMateriasView(PermissionRequiredMixin, ListView): + model = get_user_model() + template_name = 'base/protocolos_com_materias.html' + context_object_name = 'protocolos_com_materias' + permission_required = ('base.list_appconfig',) + paginate_by = 10 - t = tabela.items() - return t + def get_queryset(self): + return protocolos_com_materias() + + def get_context_data(self, **kwargs): + context = super( + ListarProtocolosComMateriasView, 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' + ] = '--.' + return context -def protocolo_duplicados(): +def protocolos_duplicados(): protocolos = {} for p in Protocolo.objects.all(): key = "{}/{}".format(p.numero, p.ano) @@ -950,7 +991,7 @@ class ListarProtocolosDuplicadosView(PermissionRequiredMixin, ListView): paginate_by = 10 def get_queryset(self): - return protocolo_duplicados() + return protocolos_duplicados() def get_context_data(self, **kwargs): context = super( diff --git a/sapl/templates/base/lista_inconsistencias.html b/sapl/templates/base/lista_inconsistencias.html index 5dd93b240..6c991f9c7 100644 --- a/sapl/templates/base/lista_inconsistencias.html +++ b/sapl/templates/base/lista_inconsistencias.html @@ -7,10 +7,10 @@

Lista de Inconsistências

- {% for campo, valor in tabela_inconsistencias %} + {% for complemento_link, nome, valor in tabela_inconsistencias %} diff --git a/sapl/templates/base/protocolos_com_materias.html b/sapl/templates/base/protocolos_com_materias.html new file mode 100644 index 000000000..982993c08 --- /dev/null +++ b/sapl/templates/base/protocolos_com_materias.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} +{% load i18n %} +{% load tz %} +{% load common_tags %} +{% block base_content %} +
+

Lista de Protocolos que Excedem o Limite de Matérias Vinculadas

+ {% if not protocolos_com_materias %} +

{{ NO_ENTRIES_MSG }}

+ {% else %} +
- {{ campo }} + {{ nome }} {{ valor }}
+ + + + + + + + {% for protocolo, quantidade in protocolos_com_materias %} + + + + + {% endfor %} + +
ProtocoloQuantidade de Matérias Vinculas
+ {{ protocolo }} + {{ quantidade }}
+ {% endif %} + + {% include 'paginacao.html'%} +{% endblock base_content %} \ No newline at end of file