From db1f3ad2df757b154c93006d687ebf56b66905a4 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 | 2 +- sapl/base/views.py | 507 --------------------------------------------- 2 files changed, 1 insertion(+), 508 deletions(-) diff --git a/sapl/base/urls.py b/sapl/base/urls.py index 39a402dd9..831f6db95 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -34,7 +34,7 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, ListarParlMandatosIntersecaoView, ListarAutoresDuplicadosView, ListarBancadaComissaoAutorExternoView, - ListarLegislaturaInfindavelView) + ListarLegislaturaInfindavelView)s app_name = AppConfig.name diff --git a/sapl/base/views.py b/sapl/base/views.py index d7bccbfa8..d126561e5 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -918,513 +918,6 @@ 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.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): model = get_user_model() template_name = 'base/lista_inconsistencias.html'