Browse Source

Adicionar identificação de protocolos duplicados

pull/2454/head
João Rodrigues 7 years ago
committed by João Rodrigues
parent
commit
db1f3ad2df
  1. 2
      sapl/base/urls.py
  2. 507
      sapl/base/views.py

2
sapl/base/urls.py

@ -34,7 +34,7 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
ListarParlMandatosIntersecaoView, ListarParlMandatosIntersecaoView,
ListarAutoresDuplicadosView, ListarAutoresDuplicadosView,
ListarBancadaComissaoAutorExternoView, ListarBancadaComissaoAutorExternoView,
ListarLegislaturaInfindavelView) ListarLegislaturaInfindavelView)s
app_name = AppConfig.name app_name = AppConfig.name

507
sapl/base/views.py

@ -918,513 +918,6 @@ class EstatisticasAcessoNormas(TemplateView):
return self.render_to_response(context) 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.append(
('protocolos_duplicados',
'Protocolos duplicados',
len(protocolos_duplicados())
)
)
tabela.append(
('protocolos_materias',
'Protocolos que excedem o limite de matérias vinculadas',
len(protocolos_materias())
)
)
tabela.append(
('materias_protocolo_inexistente',
'Matérias Legislativas com protocolo inexistente',
len(materias_protocolo_inexistente())
)
)
tabela.append(
('parlamentares_mandatos_intersecao',
'Parlamentares com mandatos com interseção',
len(parlamentares_mandatos_intersecao())
)
)
tabela.append(
('autores_duplicados',
'Autores duplicados',
len(autores_duplicados())
)
)
tabela.append(
('bancada_comissao_autor_externo',
'Bancadas e Comissões com autor externo',
len(bancada_comissao_autor_externo())
)
)
return tabela
def bancada_comissao_autor_externo():
lista_bancada_autor_externo = []
lista_comissao_autor_externo = []
tipo_autor_externo = TipoAutor.objects.filter(descricao='Externo')
for bancada in Bancada.objects.all().order_by('nome'):
autor_externo = bancada.autor.filter(tipo=tipo_autor_externo)
# if len(autor_externo) == 1:
if len(autor_externo) > 0:
q_autor_externo = bancada.autor.get(tipo=tipo_autor_externo)
lista_bancada_autor_externo.append(
(q_autor_externo, bancada, 'Bancada', 'sistema/bancada')
)
# elif len(autor_externo) > 1:
# q_autor_externo = bancada.autor.get(tipo=tipo_autor_externo)
# for autor in q_autor_externo:
# lista_bancada_autor_externo.append(
# (q_autor_externo, bancada, 'Bancada')
# )
for comissao in Comissao.objects.all().order_by('nome'):
autor_externo = comissao.autor.filter(tipo=tipo_autor_externo)
# if len(autor_externo) == 1:
if len(autor_externo) > 0:
q_autor_externo = comissao.autor.get(tipo=tipo_autor_externo)
lista_comissao_autor_externo.append(
(q_autor_externo, comissao, 'Comissão', 'comissao')
)
# elif len(autor_externo) > 1:
# q_autor_externo = comissao.autor.get(tipo=tipo_autor_externo)
# for autor in q_autor_externo:
# lista_comissao_autor_externo.append(
# (q_autor_externo, comissao, 'Comissão')
# )
return lista_bancada_autor_externo + lista_comissao_autor_externo
class ListarBancadaComissaoAutorExternoView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/bancada_comissao_autor_externo.html'
context_object_name = 'bancada_comissao_autor_externo'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return bancada_comissao_autor_externo()
def get_context_data(self, **kwargs):
context = super(
ListarBancadaComissaoAutorExternoView, 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
def autores_duplicados():
autores = {}
for a in Autor.objects.all().order_by('nome'):
key = "{}".format(a.nome)
val = autores.get(key, list())
val.append(a)
autores[key] = val
lista_duplicados = [v for (k, v) in autores.items() if len(v) > 1]
return [(v[0], len(v)) for v in lista_duplicados]
class ListarAutoresDuplicadosView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/autores_duplicados.html'
context_object_name = 'autores_duplicados'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return autores_duplicados()
def get_context_data(self, **kwargs):
context = super(
ListarAutoresDuplicadosView, 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
def parlamentares_mandatos_intersecao():
intersecoes = []
for parlamentar in Parlamentar.objects.all().order_by('nome_completo'):
mandatos = parlamentar.mandato_set.all()
length = len(mandatos)
if mandatos and length > 1:
for i in range(0, length-1):
for j in range(i+1, length):
mandato = mandatos[i]
prox_mandato = mandatos[j]
exists = intervalos_tem_intersecao(
mandato.data_inicio_mandato,
mandato.data_fim_mandato,
prox_mandato.data_inicio_mandato,
prox_mandato.data_fim_mandato)
if exists:
intersecoes.append(
(parlamentar, mandato, prox_mandato))
return intersecoes
class ListarParlMandatosIntersecaoView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/parlamentares_mandatos_intersecao.html'
context_object_name = 'parlamentares_mandatos_intersecao'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return parlamentares_mandatos_intersecao()
def get_context_data(self, **kwargs):
context = super(
ListarParlMandatosIntersecaoView, 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
def materias_protocolo_inexistente():
materias = []
for materia in MateriaLegislativa.objects.order_by('-ano', 'numero'):
if materia.numero_protocolo:
exists = Protocolo.objects.filter(
ano=materia.ano, numero=materia.numero_protocolo).exists()
if not exists:
materias.append(
(materia, materia.ano, materia.numero_protocolo))
return materias
class ListarMatProtocoloInexistenteView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/materias_protocolo_inexistente.html'
context_object_name = 'materias_protocolo_inexistente'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return materias_protocolo_inexistente()
def get_context_data(self, **kwargs):
context = super(
ListarMatProtocoloInexistenteView, 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 protocolos_materias():
lista_protocolos_materias = []
protocolos = {}
for m in MateriaLegislativa.objects.order_by('-ano', 'numero_protocolo'):
key = "{}/{}".format(m.numero_protocolo, m.ano)
val = protocolos.get(key, list())
val.append(m)
protocolos[key] = val
for k, v in protocolos.items():
if 'None' not in k:
if Protocolo.objects.filter(numero=int(k.split('/')[0]),
ano=int(k.split('/')[1])
).exists():
if len(v) > 1:
p = Protocolo.objects.filter(numero=int(k.split('/')[0]),
ano=int(k.split('/')[1]))
lista_protocolos_materias.append((p[0], len(v)))
return lista_protocolos_materias
# protocolos = []
# for protocolo in Protocolo.objects.order_by('-ano', 'numero'):
# 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 ListarProtocolosMateriasView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/protocolos_materias.html'
context_object_name = 'protocolos_materias'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return protocolos_materias()
def get_context_data(self, **kwargs):
context = super(
ListarProtocolosMateriasView, 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
def protocolos_duplicados():
protocolos = {}
for p in Protocolo.objects.order_by('-ano', 'numero'):
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 protocolos_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 encontrado.'
return 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.append(
('protocolos_duplicados',
'Protocolos duplicados',
len(protocolos_duplicados()))
)
tabela.append(
('protocolos_materias',
'Protocolos que excedem o limite de matérias vinculadas',
len(protocolos_materias()))
)
tabela.append(
('materias_protocolo_inexistente',
'Matérias Legislativas com protocolo inexistente',
len(materias_protocolo_inexistente()))
)
tabela.append(
('parlamentares_mandatos_intersecao',
'Parlamentares com mandatos com interseção',
len(parlamentares_mandatos_intersecao()))
)
tabela.append(
('materias_com_protocolo_inexistente',
'Matérias Legislativas com protocolo inexistente',
len(materias_com_protocolo_inexistente())
)
)
return tabela
def parlamentares_mandatos_intersecao():
intersecoes = []
for parlamentar in Parlamentar.objects.all():
mandatos = parlamentar.mandato_set.all()
length = len(mandatos)
if mandatos and length > 1:
for i in range(0, length-1):
for j in range(i+1, length):
mandato = mandatos[i]
prox_mandato = mandatos[j]
exists = intervalos_tem_intersecao(
mandato.data_inicio_mandato,
mandato.data_fim_mandato,
prox_mandato.data_inicio_mandato,
prox_mandato.data_fim_mandato)
if exists:
intersecoes.append(
(parlamentar, mandato, prox_mandato))
return intersecoes
class ListarParlMandatosIntersecaoView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/parlamentares_mandatos_intersecao.html'
context_object_name = 'parlamentares_mandatos_intersecao'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return parlamentares_mandatos_intersecao()
def get_context_data(self, **kwargs):
context = super(
ListarParlMandatosIntersecaoView, 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
def materias_protocolo_inexistente():
materias = []
for materia in MateriaLegislativa.objects.all().order_by('-ano'):
if materia.numero_protocolo:
exists = Protocolo.objects.filter(
ano=materia.ano, numero=materia.numero_protocolo).exists()
if not exists:
materias.append(
(materia, materia.ano, materia.numero_protocolo))
return materias
class ListarMatProtocoloInexistenteView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/materias_protocolo_inexistente.html'
context_object_name = 'materias_protocolo_inexistente'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return materias_protocolo_inexistente()
def get_context_data(self, **kwargs):
context = super(
ListarMatProtocoloInexistenteView, 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 protocolos_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 ListarProtocolosMateriasView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/protocolos_materias.html'
context_object_name = 'protocolos_materias'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return protocolos_materias()
def get_context_data(self, **kwargs):
context = super(
ListarProtocolosMateriasView, 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
def protocolos_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 protocolos_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 encontrado.'
return context
class ListarInconsistenciasView(PermissionRequiredMixin, ListView): class ListarInconsistenciasView(PermissionRequiredMixin, ListView):
model = get_user_model() model = get_user_model()
template_name = 'base/lista_inconsistencias.html' template_name = 'base/lista_inconsistencias.html'

Loading…
Cancel
Save