|
|
@ -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' |
|
|
|