Browse Source

Identificar anexados e anexadas cíclicas

pull/2826/head
João 7 years ago
committed by João Rodrigues
parent
commit
2f70259d48
  1. 23
      sapl/base/urls.py
  2. 124
      sapl/base/views.py
  3. 34
      sapl/templates/base/anexadas_ciclicas.html
  4. 34
      sapl/templates/base/anexados_ciclicos.html

23
sapl/base/urls.py

@ -29,17 +29,13 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
EstatisticasAcessoNormas,
RelatoriosListView,
ListarInconsistenciasView, ListarProtocolosDuplicadosView,
ListarProtocolosComMateriasView,
ListarMatProtocoloInexistenteView,
ListarProtocolosComMateriasView, ListarMatProtocoloInexistenteView,
ListarParlamentaresDuplicadosView,
ListarFiliacoesSemDataFiliacaoView,
ListarMandatoSemDataInicioView,
ListarParlMandatosIntersecaoView,
ListarParlFiliacoesIntersecaoView,
ListarAutoresDuplicadosView,
ListarBancadaComissaoAutorExternoView,
ListarLegislaturaInfindavelView,
pesquisa_textual,
ListarFiliacoesSemDataFiliacaoView, ListarMandatoSemDataInicioView,
ListarParlMandatosIntersecaoView, ListarParlFiliacoesIntersecaoView,
ListarAutoresDuplicadosView, ListarBancadaComissaoAutorExternoView,
ListarLegislaturaInfindavelView, ListarAnexadasCiclicasView,
ListarAnexadosCiclicosView, pesquisa_textual,
RelatorioHistoricoTramitacaoAdmView)
@ -180,6 +176,13 @@ urlpatterns = [
url(r'^sistema/inconsistencias/legislatura_infindavel$',
ListarLegislaturaInfindavelView.as_view(),
name='lista_legislatura_infindavel'),
url(r'sistema/inconsistencias/anexadas_ciclicas$',
ListarAnexadasCiclicasView.as_view(),
name='lista_anexadas_ciclicas'),
url(r'sistema/inconsistencias/anexados_ciclicos$',
ListarAnexadosCiclicosView.as_view(),
name='lista_anexados_ciclicos'),
url(r'^sistema/pesquisa-textual',
pesquisa_textual,
name='pesquisa_textual'),

124
sapl/base/views.py

@ -35,13 +35,13 @@ from sapl.base.forms import AutorForm, AutorFormForAdmin, TipoAutorForm
from sapl.base.models import Autor, TipoAutor
from sapl.comissoes.models import Reuniao, Comissao
from sapl.crud.base import CrudAux, make_pagination
from sapl.materia.models import (Autoria, MateriaLegislativa, Proposicao,
from sapl.materia.models import (Autoria, MateriaLegislativa, Proposicao, Anexada,
TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao)
from sapl.norma.models import (NormaJuridica, NormaEstatisticas)
from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato, Filiacao, SessaoLegislativa
from sapl.protocoloadm.models import (Protocolo, TipoDocumentoAdministrativo,
StatusTramitacaoAdministrativo,
DocumentoAdministrativo)
DocumentoAdministrativo, Anexado)
from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, Bancada)
from sapl.utils import (parlamentares_ativos, gerar_hash_arquivo, SEPARADOR_HASH_PROPOSICAO,
@ -1061,10 +1061,128 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView):
len(legislatura_infindavel())
)
)
tabela.append(
('anexadas_ciclicas',
'Matérias Anexadas cíclicas',
len(anexados_ciclicos(True))
)
)
tabela.append(
('anexados_ciclicos',
'Documentos Anexados cíclicos',
len(anexados_ciclicos(False))
)
)
return tabela
def anexados_ciclicos(ofMateriaLegislativa):
ciclicos = []
if ofMateriaLegislativa:
principais = Anexada.objects.values(
'materia_principal'
).annotate(
count=Count('materia_principal')
).filter(count__gt=0).order_by('data_anexacao')
else:
principais = Anexado.objects.values(
'documento_principal'
).annotate(
count=Count('documento_principal')
).filter(count__gt=0).order_by('data_anexacao')
for principal in principais:
anexados_total = []
if ofMateriaLegislativa:
anexados = Anexada.objects.filter(
materia_principal=principal['materia_principal']
)
else:
anexados = Anexado.objects.filter(
documento_principal=principal['documento_principal']
)
anexados_temp = list(anexados)
while anexados_temp:
anexado = anexados_temp.pop()
if ofMateriaLegislativa:
if anexado.materia_anexada not in anexados_total:
if not principal['materia_principal'] == anexado.materia_anexada.pk:
anexados_total.append(anexado.materia_anexada)
anexados_anexado = Anexada.objects.filter(
materia_principal=anexado.materia_anexada
)
anexados_temp.extend(anexados_anexado)
else:
ciclicos.append((anexado.materia_principal, anexado.materia_anexada))
else:
if anexado.documento_anexado not in anexados_total:
if not principal['documento_principal'] == anexado.documento_anexado.pk:
anexados_total.append(anexado.documento_anexado)
anexados_anexado = Anexado.objects.filter(
documento_principal=anexado.documento_anexado
)
anexados_temp.extend(anexados_anexado)
else:
ciclicos.append((anexado.documento_principal, anexado.documento_anexado))
return ciclicos
class ListarAnexadosCiclicosView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/anexados_ciclicos.html'
context_object_name = 'anexados_ciclicos'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return anexados_ciclicos(False)
def get_context_data(self, **kwargs):
context = super(
ListarAnexadosCiclicosView, 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 encontrado.'
return context
class ListarAnexadasCiclicasView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/anexadas_ciclicas.html'
context_object_name = 'anexadas_ciclicas'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return anexados_ciclicos(True)
def get_context_data(self, **kwargs):
context = super(
ListarAnexadasCiclicasView, 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'] = 'Nenhuma encontrada.'
return context
def legislatura_infindavel():
return Legislatura.objects.filter(data_fim__isnull=True).order_by('-numero')

34
sapl/templates/base/anexadas_ciclicas.html

@ -0,0 +1,34 @@
{% extends "base.html" %}
{% load common_tags %}
{% block base_content %}
<fieldset>
<h1>Lista de Matérias Anexadas Cíclicas</h1>
<br/>
{% if not anexadas_ciclicas %}
<p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Matéria Fim do Ciclo</th>
<th>Matéria Início do Ciclo</th>
</tr>
</thead>
<tbody>
{% for fim, inicio in anexadas_ciclicas %}
<tr>
<td>
<a href="{% url 'sapl.materia:materialegislativa_detail' fim.pk %}">{{ fim }}</a>
</td>
<td>
<a href="{% url 'sapl.materia:materialegislativa_detail' inicio.pk %}">{{ inicio }}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</fieldset>
{% include 'paginacao.html' %}
<br/>
{% endblock base_content %}

34
sapl/templates/base/anexados_ciclicos.html

@ -0,0 +1,34 @@
{% extends "base.html" %}
{% load common_tags %}
{% block base_content %}
<fieldset>
<h1>Lista de Documentos Anexados Cíclicos</h1>
<br/>
{% if not anexados_ciclicos %}
<p>{{ NO_ENTRIES_MSG }}</p>
{% else %}
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Documento Fim do Ciclo</th>
<th>Documento Início do Ciclo</th>
</tr>
</thead>
<tbody>
{% for fim, inicio in anexados_ciclicos %}
<tr>
<td>
<a href="{% url 'sapl.protocoloadm:documentoadministrativo_detail' fim.pk %}">{{ fim }}</a>
</td>
<td>
<a href="{% url 'sapl.protocoloadm:documentoadministrativo_detail' inicio.pk %}">{{ inicio }}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</fieldset>
{% include 'paginacao.html' %}
<br/>
{% endblock base_content %}
Loading…
Cancel
Save