Sistema de Apoio ao Processo Legislativo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1774 lines
63 KiB

import collections
import datetime
import itertools
import json
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
import logging
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
import os
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.auth.models import Group, User
from django.contrib.auth.tokens import default_token_generator
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied, ValidationError
from django.core.mail import send_mail
from django.core.urlresolvers import reverse, reverse_lazy
from django.db import connection
from django.db.models import Count, Q, ProtectedError
from django.shortcuts import render
from django.http import Http404, HttpResponseRedirect, JsonResponse
from django.template import TemplateDoesNotExist
from django.template.loader import get_template
from django.utils import timezone
from django.utils.encoding import force_bytes
8 years ago
from django.utils.http import urlsafe_base64_decode, urlsafe_base64_encode
from django.utils.safestring import mark_safe
from django.utils.translation import string_concat
from django.utils.translation import ugettext_lazy as _
from django.views.generic import (CreateView, DeleteView, FormView, ListView,
UpdateView)
from django.views.generic.base import RedirectView, TemplateView
from django_filters.views import FilterView
from haystack.views import SearchView
7 years ago
from sapl import settings
from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica
8 years ago
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,
TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao)
from sapl.norma.models import (NormaJuridica, NormaEstatisticas)
from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato, Filiacao
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
from sapl.protocoloadm.models import Protocolo
from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria,
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
SessaoPlenariaPresenca, Bancada)
from sapl.utils import (parlamentares_ativos, gerar_hash_arquivo, SEPARADOR_HASH_PROPOSICAO,
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
show_results_filter_set, mail_service_configured,
intervalos_tem_intersecao,)
7 years ago
from .forms import (AlterarSenhaForm, CasaLegislativaForm,
ConfiguracoesAppForm, RelatorioAtasFilterSet,
RelatorioAudienciaFilterSet,
7 years ago
RelatorioDataFimPrazoTramitacaoFilterSet,
RelatorioHistoricoTramitacaoFilterSet,
RelatorioMateriasPorAnoAutorTipoFilterSet,
RelatorioMateriasPorAutorFilterSet,
RelatorioMateriasTramitacaoilterSet,
RelatorioPresencaSessaoFilterSet,
RelatorioReuniaoFilterSet, UsuarioCreateForm,
UsuarioEditForm, RelatorioNormasMesFilterSet,
RelatorioNormasVigenciaFilterSet,
EstatisticasAcessoNormasForm, UsuarioFilterSet)
from .models import AppConfig, CasaLegislativa
10 years ago
def chanel_index(request):
return render(request, 'base/channel_index.html', {})
def chanel_room(request, room_name):
return render(request, 'base/channel_room.html', {
'room_name_json': mark_safe(json.dumps(room_name))
})
def time_refresh_log_test(request):
return render(request, 'base/time_refresh_log_test.html', {})
def online_app_view(request):
return render(request, 'online_app.html')
def filtra_url_materias_em_tramitacao(qr, qs, campo_url, local_ou_status):
id_materias = []
filtro_url = qr[campo_url]
if local_ou_status == 'local':
id_materias = [item.id for item in qs if item.tramitacao_set.order_by(
'-id').first().unidade_tramitacao_destino_id == int(filtro_url)]
elif local_ou_status == 'status':
id_materias = [item.id for item in qs if item.tramitacao_set.order_by(
'-id').first().status_id == int(filtro_url)]
return qs.filter(em_tramitacao=True, id__in=id_materias)
def get_casalegislativa():
return CasaLegislativa.objects.first()
class ConfirmarEmailView(TemplateView):
template_name = "email/confirma.html"
def get(self, request, *args, **kwargs):
uid = urlsafe_base64_decode(self.kwargs['uidb64'])
user = get_user_model().objects.get(id=uid)
user.is_active = True
user.save()
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
class TipoAutorCrud(CrudAux):
model = TipoAutor
help_topic = 'tipo-autor'
class BaseMixin(CrudAux.BaseMixin):
list_field_names = ['descricao']
form_class = TipoAutorForm
@property
def verbose_name(self):
vn = super().verbose_name
vn = string_concat(vn, ' ', _('Externo ao SAPL'))
return vn
class ListView(CrudAux.ListView):
template_name = "base/tipoautor_list.html"
7 years ago
def get_queryset(self):
qs = CrudAux.ListView.get_queryset(self)
qs = qs.filter(content_type__isnull=True)
return qs
def get_context_data(self, **kwargs):
context = CrudAux.ListView.get_context_data(self, **kwargs)
context['tipos_sapl'] = TipoAutor.objects.filter(
content_type__isnull=False)
return context
class TipoAutorMixin:
7 years ago
def dispatch(self, request, *args, **kwargs):
object = self.get_object()
if object.content_type:
raise PermissionDenied()
return super().dispatch(request, *args, **kwargs)
class UpdateView(TipoAutorMixin, CrudAux.UpdateView):
pass
class DetailView(TipoAutorMixin, CrudAux.DetailView):
pass
class DeleteView(TipoAutorMixin, CrudAux.DeleteView):
pass
class AutorCrud(CrudAux):
model = Autor
help_topic = 'autor'
class BaseMixin(CrudAux.BaseMixin):
list_field_names = ['tipo', 'nome', 'user']
class DeleteView(CrudAux.DeleteView):
def delete(self, *args, **kwargs):
self.object = self.get_object()
if self.object.user:
# FIXME melhorar captura de grupo de Autor, levando em conta
# trad
grupo = Group.objects.filter(name='Autor')[0]
self.object.user.groups.remove(grupo)
return CrudAux.DeleteView.delete(self, *args, **kwargs)
class UpdateView(CrudAux.UpdateView):
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
logger = logging.getLogger(__name__)
layout_key = None
form_class = AutorForm
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
def form_valid(self, form):
# devido a implement do form o form_valid do Crud deve ser pulado
return super(CrudAux.UpdateView, self).form_valid(form)
def post(self, request, *args, **kwargs):
if request.user.is_superuser:
self.form_class = AutorFormForAdmin
return CrudAux.UpdateView.post(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs):
if request.user.is_superuser:
self.form_class = AutorFormForAdmin
return CrudAux.UpdateView.get(self, request, *args, **kwargs)
def get_success_url(self):
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
username = self.request.user.username
pk_autor = self.object.id
url_reverse = reverse('sapl.base:autor_detail',
kwargs={'pk': pk_autor})
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
if not mail_service_configured():
self.logger.warning(_('Registro de Autor sem envio de email. '
'Servidor de email não configurado.'))
return url_reverse
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
try:
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.debug('user={}. Enviando email na edição '
'de Autores.'.format(username))
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
kwargs = {}
user = self.object.user
if not user:
return url_reverse
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
kwargs['token'] = default_token_generator.make_token(user)
kwargs['uidb64'] = urlsafe_base64_encode(force_bytes(user.pk))
assunto = "SAPL - Confirmação de Conta"
full_url = self.request.get_raw_uri()
url_base = full_url[:full_url.find('sistema') - 1]
mensagem = (
"Este e-mail foi utilizado para fazer cadastro no " +
"SAPL com o perfil de Autor. Agora você pode " +
"criar/editar/enviar Proposições.\n" +
"Seu nome de usuário é: " +
self.request.POST['username'] + "\n"
"Caso você não tenha feito este cadastro, por favor " +
"ignore esta mensagem. Caso tenha, clique " +
"no link abaixo\n" + url_base +
reverse('sapl.base:confirmar_email', kwargs=kwargs))
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
remetente = settings.EMAIL_SEND_USER
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
destinatario = [user.email]
send_mail(assunto, mensagem, remetente, destinatario,
fail_silently=False)
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
except Exception as e:
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.error('user={}. Erro no envio de email na edição de'
' Autores. {}'.format(username, str(e)))
return url_reverse
class CreateView(CrudAux.CreateView):
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
logger = logging.getLogger(__name__)
form_class = AutorForm
layout_key = None
def post(self, request, *args, **kwargs):
if request.user.is_superuser:
self.form_class = AutorFormForAdmin
return CrudAux.CreateView.post(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs):
if request.user.is_superuser:
self.form_class = AutorFormForAdmin
return CrudAux.CreateView.get(self, request, *args, **kwargs)
def get_success_url(self):
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
username = self.request.user.username
pk_autor = self.object.id
url_reverse = reverse('sapl.base:autor_detail',
kwargs={'pk': pk_autor})
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
if not mail_service_configured():
self.logger.warning(_('Registro de Autor sem envio de email. '
'Servidor de email não configurado.'))
return url_reverse
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
try:
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.debug('user=' + username +
'. Enviando email na criação de Autores.')
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
kwargs = {}
user = self.object.user
if not user:
return url_reverse
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
kwargs['token'] = default_token_generator.make_token(user)
kwargs['uidb64'] = urlsafe_base64_encode(force_bytes(user.pk))
assunto = "SAPL - Confirmação de Conta"
full_url = self.request.get_raw_uri()
url_base = full_url[:full_url.find('sistema') - 1]
mensagem = (
"Este e-mail foi utilizado para fazer cadastro no " +
"SAPL com o perfil de Autor. Agora você pode " +
"criar/editar/enviar Proposições.\n" +
"Seu nome de usuário é: " +
self.request.POST['username'] + "\n"
"Caso você não tenha feito este cadastro, por favor " +
"ignore esta mensagem. Caso tenha, clique " +
"no link abaixo\n" + url_base +
reverse('sapl.base:confirmar_email', kwargs=kwargs))
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
remetente = settings.EMAIL_SEND_USER
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox's para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
destinatario = [user.email]
send_mail(assunto, mensagem, remetente, destinatario,
fail_silently=False)
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
except Exception as e:
print(
_('Erro no envio de email na criação de Autores.'))
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.error(
'user=' + username + '. Erro no envio de email na criação de Autores. ' + str(e))
return url_reverse
class RelatoriosListView(TemplateView):
template_name = 'base/relatorios_list.html'
def get_context_data(self, **kwargs):
context = super(TemplateView, self).get_context_data(**kwargs)
estatisticas_acesso_normas = AppConfig.objects.first().estatisticas_acesso_normas
if estatisticas_acesso_normas == 'S':
context['estatisticas_acesso_normas'] = True
else:
context['estatisticas_acesso_normas'] = False
return context
class RelatorioAtasView(FilterView):
model = SessaoPlenaria
filterset_class = RelatorioAtasFilterSet
template_name = 'base/RelatorioAtas_filter.html'
def get_context_data(self, **kwargs):
context = super(RelatorioAtasView,
self).get_context_data(**kwargs)
context['title'] = _('Atas das Sessões Plenárias')
# Verifica se os campos foram preenchidos
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
context['periodo'] = (
self.request.GET['data_inicio_0'] +
' - ' + self.request.GET['data_inicio_1'])
return context
class RelatorioPresencaSessaoView(FilterView):
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
logger = logging.getLogger(__name__)
model = SessaoPlenaria
filterset_class = RelatorioPresencaSessaoFilterSet
template_name = 'base/RelatorioPresencaSessao_filter.html'
def get_context_data(self, **kwargs):
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
context = super(RelatorioPresencaSessaoView,
self).get_context_data(**kwargs)
context['title'] = _('Presença dos parlamentares nas sessões')
# Verifica se os campos foram preenchidos
if not self.filterset.form.is_valid():
return context
7 years ago
# if 'salvar' not in self.request.GET:
where = context['object_list'].query.where
_range = where.children[0].rhs
sufixo = 'sessao_plenaria__data_inicio__range'
param0 = {'%s' % sufixo: _range}
# Parlamentares com Mandato no intervalo de tempo (Ativos)
parlamentares_qs = parlamentares_ativos(
_range[0], _range[1]).order_by('nome_parlamentar')
parlamentares_id = parlamentares_qs.values_list(
'id', flat=True)
# Presenças de cada Parlamentar em Sessões
presenca_sessao = SessaoPlenariaPresenca.objects.filter(
parlamentar_id__in=parlamentares_id,
sessao_plenaria__data_inicio__range=_range).values_list(
'parlamentar_id').annotate(
sessao_count=Count('id'))
# Presenças de cada Ordem do Dia
presenca_ordem = PresencaOrdemDia.objects.filter(
parlamentar_id__in=parlamentares_id,
sessao_plenaria__data_inicio__range=_range).values_list(
'parlamentar_id').annotate(
sessao_count=Count('id'))
total_ordemdia = PresencaOrdemDia.objects.filter(
**param0).distinct('sessao_plenaria__id').order_by(
'sessao_plenaria__id').count()
total_sessao = context['object_list'].count()
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
username = self.request.user.username
7 years ago
# Completa o dicionario as informacoes parlamentar/sessao/ordem
parlamentares_presencas = []
for i, p in enumerate(parlamentares_qs):
m = p.mandato_set.filter(Q(data_inicio_mandato__lte=_range[0], data_fim_mandato__gte=_range[1]) |
Q(data_inicio_mandato__lte=_range[0], data_fim_mandato__isnull=True) |
Q(data_inicio_mandato__gte=_range[0], data_fim_mandato__lte=_range[1]) |
# mandato suplente
Q(data_inicio_mandato__gte=_range[0], data_fim_mandato__lte=_range[1]))
m = m.last()
7 years ago
parlamentares_presencas.append({
'parlamentar': p,
'titular': m.titular if m else False,
7 years ago
'sessao_porc': 0,
'ordemdia_porc': 0
})
try:
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.debug(
'user=' + username + '. Tentando obter presença do parlamentar (pk={}).'.format(p.id))
7 years ago
sessao_count = presenca_sessao.get(parlamentar_id=p.id)[1]
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
except ObjectDoesNotExist as e:
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.error(
'user=' + username + '. Erro ao obter presença do parlamentar (pk={}). Definido como 0. '.format(p.id) + str(e))
7 years ago
sessao_count = 0
try:
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
# Presenças de cada Ordem do Dia
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.info(
'user=' + username + '. Tentando obter PresencaOrdemDia para o parlamentar pk={}.'.format(p.id))
7 years ago
ordemdia_count = presenca_ordem.get(parlamentar_id=p.id)[1]
except ObjectDoesNotExist:
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
self.logger.error('user=' + username + '. Erro ao obter PresencaOrdemDia para o parlamentar pk={}. '
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de "Acompanhar Matéria" na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: "Joe Q. Public" <john.q.public@example.com> portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma ("Joe Q. Public", "john.q.public@exemple.com") então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public <john.q.public@example.com> ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
'Definido como 0.'.format(p.id))
7 years ago
ordemdia_count = 0
parlamentares_presencas[i].update({
'sessao_count': sessao_count,
'ordemdia_count': ordemdia_count
})
if total_sessao != 0:
parlamentares_presencas[i].update(
{'sessao_porc': round(
sessao_count * 100 / total_sessao, 2)})
if total_ordemdia != 0:
parlamentares_presencas[i].update(
{'ordemdia_porc': round(
ordemdia_count * 100 / total_ordemdia, 2)})
context['date_range'] = _range
context['total_ordemdia'] = total_ordemdia
context['total_sessao'] = context['object_list'].count()
context['parlamentares'] = parlamentares_presencas
context['periodo'] = (
self.request.GET['data_inicio_0'] +
' - ' + self.request.GET['data_inicio_1'])
8 years ago
# =====================================================================
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
return context
class RelatorioHistoricoTramitacaoView(FilterView):
model = MateriaLegislativa
filterset_class = RelatorioHistoricoTramitacaoFilterSet
template_name = 'base/RelatorioHistoricoTramitacao_filter.html'
def get_context_data(self, **kwargs):
context = super(RelatorioHistoricoTramitacaoView,
self).get_context_data(**kwargs)
context['title'] = _('Histórico de Tramitações')
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
context['data_tramitacao'] = (self.request.GET['tramitacao__data_tramitacao_0'] + ' - ' +
self.request.GET['tramitacao__data_tramitacao_1'])
if self.request.GET['tipo']:
tipo = self.request.GET['tipo']
context['tipo'] = (
str(TipoMateriaLegislativa.objects.get(id=tipo)))
else:
context['tipo'] = ''
if self.request.GET['tramitacao__status']:
tramitacao_status = self.request.GET['tramitacao__status']
context['tramitacao__status'] = (
str(StatusTramitacao.objects.get(id=tramitacao_status)))
else:
context['tramitacao__status'] = ''
if self.request.GET['tramitacao__unidade_tramitacao_local']:
context['tramitacao__unidade_tramitacao_local'] = \
(str(UnidadeTramitacao.objects.get(
id=self.request.GET['tramitacao__unidade_tramitacao_local'])))
else:
context['tramitacao__unidade_tramitacao_destino'] = ''
return context
7 years ago
class RelatorioDataFimPrazoTramitacaoView(FilterView):
model = MateriaLegislativa
filterset_class = RelatorioDataFimPrazoTramitacaoFilterSet
template_name = 'base/RelatorioDataFimPrazoTramitacao_filter.html'
def get_context_data(self, **kwargs):
context = super(RelatorioDataFimPrazoTramitacaoView,
self).get_context_data(**kwargs)
context['title'] = _('Fim de Prazo de Tramitações')
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
context['data_tramitacao'] = (self.request.GET['tramitacao__data_fim_prazo_0'] + ' - ' +
self.request.GET['tramitacao__data_fim_prazo_1'])
if self.request.GET['tipo']:
tipo = self.request.GET['tipo']
context['tipo'] = (
str(TipoMateriaLegislativa.objects.get(id=tipo)))
else:
context['tipo'] = ''
if self.request.GET['tramitacao__status']:
tramitacao_status = self.request.GET['tramitacao__status']
context['tramitacao__status'] = (
str(StatusTramitacao.objects.get(id=tramitacao_status)))
else:
context['tramitacao__status'] = ''
if self.request.GET['tramitacao__unidade_tramitacao_local']:
context['tramitacao__unidade_tramitacao_local'] = \
(str(UnidadeTramitacao.objects.get(
id=self.request.GET['tramitacao__unidade_tramitacao_local'])))
else:
context['tramitacao__unidade_tramitacao_destino'] = ''
return context
class RelatorioReuniaoView(FilterView):
model = Reuniao
filterset_class = RelatorioReuniaoFilterSet
template_name = 'base/RelatorioReuniao_filter.html'
def get_filterset_kwargs(self, filterset_class):
super(RelatorioReuniaoView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
return kwargs
def get_context_data(self, **kwargs):
context = super(RelatorioReuniaoView,
self).get_context_data(**kwargs)
context['title'] = _('Reunião de Comissão')
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
if self.request.GET['comissao']:
comissao = self.request.GET['comissao']
context['comissao'] = (str(Comissao.objects.get(id=comissao)))
else:
context['comissao'] = ''
return context
class RelatorioAudienciaView(FilterView):
model = AudienciaPublica
filterset_class = RelatorioAudienciaFilterSet
template_name = 'base/RelatorioAudiencia_filter.html'
def get_filterset_kwargs(self, filterset_class):
super(RelatorioAudienciaView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
return kwargs
def get_context_data(self, **kwargs):
context = super(RelatorioAudienciaView,
self).get_context_data(**kwargs)
context['title'] = _('Audiência Pública')
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
if self.request.GET['tipo']:
tipo = self.request.GET['tipo']
context['tipo'] = (str(TipoAudienciaPublica.objects.get(id=tipo)))
else:
context['tipo'] = ''
return context
class RelatorioMateriasTramitacaoView(FilterView):
model = MateriaLegislativa
filterset_class = RelatorioMateriasTramitacaoilterSet
template_name = 'base/RelatorioMateriasPorTramitacao_filter.html'
def get_context_data(self, **kwargs):
context = super(RelatorioMateriasTramitacaoView,
self).get_context_data(**kwargs)
context['title'] = _('Matérias em Tramitação')
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
qs = context['object_list']
qs = qs.filter(em_tramitacao=True)
if qr.get('tramitacao__unidade_tramitacao_destino'):
qs = filtra_url_materias_em_tramitacao(
qr, qs, 'tramitacao__unidade_tramitacao_destino', 'local')
if qr.get('tramitacao__status'):
qs = filtra_url_materias_em_tramitacao(
qr, qs, 'tramitacao__status', 'status')
context['object_list'] = qs
qtdes = {}
for tipo in TipoMateriaLegislativa.objects.all():
qs = context['object_list']
qtde = len(qs.filter(tipo_id=tipo.id))
if qtde > 0:
qtdes[tipo] = qtde
context['qtdes'] = qtdes
context['ano'] = (self.request.GET['ano'])
if self.request.GET['tipo']:
tipo = self.request.GET['tipo']
context['tipo'] = (
str(TipoMateriaLegislativa.objects.get(id=tipo)))
else:
context['tipo'] = ''
if self.request.GET['tramitacao__status']:
tramitacao_status = self.request.GET['tramitacao__status']
context['tramitacao__status'] = (
str(StatusTramitacao.objects.get(id=tramitacao_status)))
else:
context['tramitacao__status'] = ''
if self.request.GET['tramitacao__unidade_tramitacao_destino']:
context['tramitacao__unidade_tramitacao_destino'] = (str(UnidadeTramitacao.objects.get(
id=self.request.GET['tramitacao__unidade_tramitacao_destino'])))
else:
context['tramitacao__unidade_tramitacao_destino'] = ''
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
return context
class RelatorioMateriasPorAnoAutorTipoView(FilterView):
model = MateriaLegislativa
filterset_class = RelatorioMateriasPorAnoAutorTipoFilterSet
template_name = 'base/RelatorioMateriasPorAnoAutorTipo_filter.html'
def get_materias_autor_ano(self, ano, primeiro_autor):
autorias = Autoria.objects.filter(materia__ano=ano, primeiro_autor=primeiro_autor).values(
'autor',
'materia__tipo__sigla',
'materia__tipo__descricao').annotate(
total=Count('materia__tipo')).order_by(
'autor',
'materia__tipo')
autores_ids = set([i['autor'] for i in autorias])
autores = dict((a.id, a) for a in Autor.objects.filter(
id__in=autores_ids))
relatorio = []
visitados = set()
curr = None
for a in autorias:
# se mudou autor, salva atual, caso existente, e reinicia `curr`
if a['autor'] not in visitados:
if curr:
relatorio.append(curr)
curr = {}
curr['autor'] = autores[a['autor']]
curr['materia'] = []
curr['total'] = 0
visitados.add(a['autor'])
# atualiza valores
curr['materia'].append((a['materia__tipo__descricao'], a['total']))
curr['total'] += a['total']
# adiciona o ultimo
relatorio.append(curr)
return relatorio
def get_filterset_kwargs(self, filterset_class):
super(RelatorioMateriasPorAnoAutorTipoView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
return kwargs
def get_context_data(self, **kwargs):
context = super(RelatorioMateriasPorAnoAutorTipoView,
self).get_context_data(**kwargs)
context['title'] = _('Matérias por Ano, Autor e Tipo')
if not self.filterset.form.is_valid():
return context
qtdes = {}
for tipo in TipoMateriaLegislativa.objects.all():
qs = kwargs['object_list']
qtde = len(qs.filter(tipo_id=tipo.id))
if qtde > 0:
qtdes[tipo] = qtde
context['qtdes'] = qtdes
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
context['ano'] = self.request.GET['ano']
if 'ano' in self.request.GET and self.request.GET['ano']:
ano = int(self.request.GET['ano'])
context['relatorio'] = self.get_materias_autor_ano(ano, True)
context['corelatorio'] = self.get_materias_autor_ano(ano, False)
else:
context['relatorio'] = []
return context
class RelatorioMateriasPorAutorView(FilterView):
model = MateriaLegislativa
filterset_class = RelatorioMateriasPorAutorFilterSet
template_name = 'base/RelatorioMateriasPorAutor_filter.html'
def get_filterset_kwargs(self, filterset_class):
super(RelatorioMateriasPorAutorView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
return kwargs
def get_context_data(self, **kwargs):
context = super(RelatorioMateriasPorAutorView,
self).get_context_data(**kwargs)
context['title'] = _('Matérias por Autor')
if not self.filterset.form.is_valid():
return context
qtdes = {}
for tipo in TipoMateriaLegislativa.objects.all():
qs = kwargs['object_list']
qtde = len(qs.filter(tipo_id=tipo.id))
if qtde > 0:
qtdes[tipo] = qtde
context['qtdes'] = qtdes
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
if self.request.GET['tipo']:
tipo = int(self.request.GET['tipo'])
context['tipo'] = (
str(TipoMateriaLegislativa.objects.get(id=tipo)))
else:
context['tipo'] = ''
if self.request.GET['autoria__autor']:
autor = int(self.request.GET['autoria__autor'])
context['autor'] = (str(Autor.objects.get(id=autor)))
else:
context['autor'] = ''
context['periodo'] = (
self.request.GET['data_apresentacao_0'] +
' - ' + self.request.GET['data_apresentacao_1'])
return context
class RelatorioNormasPublicadasMesView(FilterView):
model = NormaJuridica
filterset_class = RelatorioNormasMesFilterSet
template_name = 'base/RelatorioNormaMes_filter.html'
def get_context_data(self, **kwargs):
context = super(RelatorioNormasPublicadasMesView,
self).get_context_data(**kwargs)
context['title'] = _('Normas')
# Verifica se os campos foram preenchidos
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
context['ano'] = self.request.GET['ano']
normas_mes = collections.OrderedDict()
meses = {1: 'Janeiro', 2: 'Fevereiro', 3: 'Março', 4: 'Abril', 5: 'Maio', 6: 'Junho',
7: 'Julho', 8: 'Agosto', 9: 'Setembro', 10: 'Outubro', 11: 'Novembro', 12: 'Dezembro'}
for norma in context['object_list']:
if not meses[norma.data.month] in normas_mes:
normas_mes[meses[norma.data.month]] = []
normas_mes[meses[norma.data.month]].append(norma)
context['normas_mes'] = normas_mes
quant_normas_mes = {}
for key in normas_mes.keys():
quant_normas_mes[key] = len(normas_mes[key])
context['quant_normas_mes'] = quant_normas_mes
return context
class RelatorioNormasVigenciaView(FilterView):
model = NormaJuridica
filterset_class = RelatorioNormasVigenciaFilterSet
template_name = 'base/RelatorioNormasVigencia_filter.html'
def get_filterset_kwargs(self, filterset_class):
super(RelatorioNormasVigenciaView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
qs = self.get_queryset().order_by('data').distinct()
if kwargs['data']:
ano = kwargs['data']['ano']
vigencia = kwargs['data']['vigencia']
if ano:
qs = qs.filter(ano=ano)
if vigencia == 'True':
qs_dt_not_null = qs.filter(data_vigencia__isnull=True)
qs = (qs_dt_not_null | qs.filter(
data_vigencia__gte=datetime.datetime.now().date())).distinct()
else:
qs = qs.filter(
data_vigencia__lt=datetime.datetime.now().date())
kwargs.update({
'queryset': qs
})
return kwargs
def get_context_data(self, **kwargs):
context = super(RelatorioNormasVigenciaView,
self).get_context_data(**kwargs)
context['title'] = _('Normas por vigência')
# Verifica se os campos foram preenchidos
if not self.filterset.form.is_valid():
return context
normas_totais = NormaJuridica.objects.filter(
ano=self.request.GET['ano'])
context['quant_total'] = len(normas_totais)
if self.request.GET['vigencia'] == 'True':
context['vigencia'] = 'Vigente'
context['quant_vigente'] = len(context['object_list'])
context['quant_nao_vigente'] = context['quant_total'] - \
context['quant_vigente']
else:
context['vigencia'] = 'Não vigente'
context['quant_nao_vigente'] = len(context['object_list'])
context['quant_vigente'] = context['quant_total'] - \
context['quant_nao_vigente']
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
context['ano'] = self.request.GET['ano']
return context
class EstatisticasAcessoNormas(TemplateView):
template_name = 'base/EstatisticasAcessoNormas_filter.html'
def get(self, request, *args, **kwargs):
context = super(EstatisticasAcessoNormas,
self).get_context_data(**kwargs)
context['title'] = _('Normas')
form = EstatisticasAcessoNormasForm(request.GET or None)
context['form'] = form
if not form.is_valid():
return self.render_to_response(context)
context['ano'] = self.request.GET['ano']
query = '''
select norma_id, ano, extract(month from horario_acesso) as mes, count(*)
from norma_normaestatisticas
where ano = {}
group by mes, ano, norma_id
order by mes desc;
'''.format(context['ano'])
cursor = connection.cursor()
cursor.execute(query)
rows = cursor.fetchall()
normas_mes = collections.OrderedDict()
meses = {1: 'Janeiro', 2: 'Fevereiro', 3: 'Março', 4: 'Abril', 5: 'Maio', 6: 'Junho',
7: 'Julho', 8: 'Agosto', 9: 'Setembro', 10: 'Outubro', 11: 'Novembro', 12: 'Dezembro'}
for row in rows:
if not meses[int(row[2])] in normas_mes:
normas_mes[meses[int(row[2])]] = []
norma_est = [NormaJuridica.objects.get(id=row[0]), row[3]]
normas_mes[meses[int(row[2])]].append(norma_est)
# Ordena por acesso e limita em 5
for n in normas_mes:
sorted_by_value = sorted(
normas_mes[n], key=lambda kv: kv[1], reverse=True)
normas_mes[n] = sorted_by_value[0:5]
context['normas_mes'] = normas_mes
return self.render_to_response(context)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
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_com_materias',
'Protocolos que excedem o limite de matérias vinculadas',
len(protocolos_com_materias())
)
)
tabela.append(
('materias_protocolo_inexistente',
'Matérias Legislativas com protocolo inexistente',
len(materias_protocolo_inexistente())
)
)
tabela.append(
('filiacoes_sem_data_filiacao',
'Filiações sem data filiação',
len(filiacoes_sem_data_filiacao())
)
)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
tabela.append(
('mandato_sem_data_inicio',
'Mandatos sem data inicial',
len(mandato_sem_data_inicio())
)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
)
tabela.append(
('parlamentares_duplicados',
'Parlamentares duplicados',
len(parlamentares_duplicados())
)
)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
tabela.append(
('parlamentares_mandatos_intersecao',
'Parlamentares com mandatos em interseção',
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
len(parlamentares_mandatos_intersecao())
)
)
tabela.append(
('parlamentares_filiacoes_intersecao',
'Parlamentares com filiações em interseção',
len(parlamentares_filiacoes_intersecao())
)
)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
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())
)
)
tabela.append(
('legislatura_infindavel',
'Legislaturas sem data fim',
len(legislatura_infindavel())
)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
)
return tabela
def legislatura_infindavel():
return Legislatura.objects.filter(data_fim__isnull=True).order_by('-numero')
class ListarLegislaturaInfindavelView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/legislatura_infindavel.html'
context_object_name = 'legislatura_infindavel'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return legislatura_infindavel()
def get_context_data(self, **kwargs):
context = super(
ListarLegislaturaInfindavelView, self
).get_context_data(**kwargs)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages)
context[
'NO_ENTRIES_MSG'
] = 'Nenhuma encontrado.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return context
def bancada_comissao_autor_externo():
tipo_autor_externo = TipoAutor.objects.filter(descricao='Externo')
lista_bancada_autor_externo = []
for bancada in Bancada.objects.all().order_by('nome'):
autor_externo = bancada.autor.filter(tipo=tipo_autor_externo)
if autor_externo:
q_autor_externo = bancada.autor.get(tipo=tipo_autor_externo)
lista_bancada_autor_externo.append(
(q_autor_externo, bancada, 'Bancada', 'sistema/bancada')
)
lista_comissao_autor_externo = []
for comissao in Comissao.objects.all().order_by('nome'):
autor_externo = comissao.autor.filter(tipo=tipo_autor_externo)
if autor_externo:
q_autor_externo = comissao.autor.get(tipo=tipo_autor_externo)
lista_comissao_autor_externo.append(
(q_autor_externo, comissao, 'Comissão', 'comissao')
)
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)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
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.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return context
def autores_duplicados():
return [autor.values() for autor in Autor.objects.values(
'nome', 'tipo__descricao').order_by(
"nome").annotate(count=Count('nome')).filter(count__gt=1)]
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
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.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return context
def parlamentares_filiacoes_intersecao():
intersecoes = []
for parlamentar in Parlamentar.objects.all().order_by('nome_parlamentar'):
filiacoes = parlamentar.filiacao_set.all()
combinacoes = itertools.combinations(filiacoes, 2)
for c in combinacoes:
data_filiacao1 = c[0].data
data_desfiliacao1 = c[0].data_desfiliacao if c[0].data_desfiliacao else timezone.now().date()
data_filiacao2 = c[1].data
data_desfiliacao2 = c[1].data_desfiliacao if c[1].data_desfiliacao else timezone.now().date()
if data_filiacao1 and data_filiacao2:
exists = intervalos_tem_intersecao(
data_filiacao1, data_desfiliacao1,
data_filiacao2, data_desfiliacao2)
if exists:
intersecoes.append((parlamentar, c[0], c[1]))
return intersecoes
class ListarParlFiliacoesIntersecaoView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/parlamentares_filiacoes_intersecao.html'
context_object_name = 'parlamentares_filiacoes_intersecao'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return parlamentares_filiacoes_intersecao()
def get_context_data(self, **kwargs):
context = super(
ListarParlFiliacoesIntersecaoView, 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
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
def parlamentares_mandatos_intersecao():
intersecoes = []
for parlamentar in Parlamentar.objects.all().order_by('nome_parlamentar'):
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
mandatos = parlamentar.mandato_set.all()
combinacoes = itertools.combinations(mandatos, 2)
for c in combinacoes:
data_inicio_mandato1 = c[0].data_inicio_mandato
data_fim_mandato1 = c[0].data_fim_mandato if c[0].data_fim_mandato else timezone.now(
).date()
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
data_inicio_mandato2 = c[1].data_inicio_mandato
data_fim_mandato2 = c[1].data_fim_mandato if c[1].data_fim_mandato else timezone.now(
).date()
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
if data_inicio_mandato1 and data_inicio_mandato2:
exists = intervalos_tem_intersecao(
data_inicio_mandato1, data_fim_mandato1,
data_inicio_mandato2, data_fim_mandato2)
if exists:
intersecoes.append((parlamentar, c[0], c[1]))
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.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return context
def parlamentares_duplicados():
return [parlamentar.values() for parlamentar in Parlamentar.objects.values(
'nome_parlamentar').order_by('nome_parlamentar').annotate(count=Count(
'nome_parlamentar')).filter(count__gt=1)]
class ListarParlamentaresDuplicadosView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/parlamentares_duplicados.html'
context_object_name = 'parlamentares_duplicados'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return parlamentares_duplicados()
def get_context_data(self, **kwargs):
context = super(
ListarParlamentaresDuplicadosView, 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
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
def mandato_sem_data_inicio():
return Mandato.objects.filter(data_inicio_mandato__isnull=True).order_by('parlamentar')
def get_data_ultima_atualizacao(request):
datas = [MateriaLegislativa.objects.all().
order_by('-data_ultima_atualizacao').
values_list('data_ultima_atualizacao', flat=True).
first(),
NormaJuridica.objects.all().
order_by('-data_ultima_atualizacao').
values_list('data_ultima_atualizacao', flat=True).
first()]
max_data = ''
if datas[0] and datas[1]:
max_data = max(datas)
else:
max_data = next([i for i in datas if i is not None], '')
return JsonResponse({'data_ultima_atualizacao': max_data})
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
class ListarMandatoSemDataInicioView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/mandato_sem_data_inicio.html'
context_object_name = 'mandato_sem_data_inicio'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return mandato_sem_data_inicio()
def get_context_data(self, **kwargs):
context = super(
ListarMandatoSemDataInicioView, self
).get_context_data(**kwargs)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
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 filiacoes_sem_data_filiacao():
return Filiacao.objects.filter(data__isnull=True).order_by('parlamentar')
class ListarFiliacoesSemDataFiliacaoView(PermissionRequiredMixin, ListView):
model = get_user_model()
template_name = 'base/filiacoes_sem_data_filiacao.html'
context_object_name = 'filiacoes_sem_data_filiacao'
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_queryset(self):
return filiacoes_sem_data_filiacao()
def get_context_data(self, **kwargs):
context = super(
ListarFiliacoesSemDataFiliacaoView, 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 encontrado.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return context
def materias_protocolo_inexistente():
materias = []
for materia in MateriaLegislativa.objects.filter(numero_protocolo__isnull=False).order_by('-ano', 'numero'):
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)
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages)
context[
'NO_ENTRIES_MSG'
] = 'Nenhuma encontrado.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return context
def protocolos_com_materias():
protocolos = {}
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
for m in MateriaLegislativa.objects.filter(numero_protocolo__isnull=False).order_by('-ano', 'numero_protocolo'):
if Protocolo.objects.filter(numero=m.numero_protocolo, ano=m.ano).exists():
key = "{}/{}".format(m.numero_protocolo, m.ano)
val = protocolos.get(key, list())
val.append(m)
protocolos[key] = val
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return [(v[0], len(v)) for (k, v) in protocolos.items() if len(v) > 1]
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
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'
] = 'Nenhum encontrado.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
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
return [(v[0], len(v)) for (k, v) in protocolos.items() if len(v) > 1]
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
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.'
Apresenta inconsistências (#2454) * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Acelerar identificação de protocolos com matérias * Adicionar migrações necessárias * Alterar a apresentação dos resultados * Adicionar migrações necessárias * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar identificação de protocolos duplicados * sobe alteracoes * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Identificar matérias com protocolos inexistentes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Alterar a apresentação dos resultados * Identificar bancadas e comissões com autor externo * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * Adicionar identificação de protocolos duplicados * Identificar protocolos com duas ou mais matérias * sobe alteracoes * Identificar parl. com mandatos com intersecção * Alterar a apresentação dos resultados * Adicionar identificação de autores duplicados * Identificar bancadas e comissões com autor externo * Alterar apresentação de resultados * Identificar legislatura infindável * Identificar legislatura sem data fim * Adicionar migrações necessárias * Tratar mandato sem data -> mandatos interseção * Adicionar importação itertools * Corregir função autores_duplicados * Refatorar função legislatura_infindavel Excluir comentários desnecessários Refatorar identificação autores duplicados Remover migrations de outro PR Correções Excluir arquivos desnecessários Alterar apresentação de resultados Identificar mandato sem data inicial * Correção templates
6 years ago
return context
class PesquisarUsuarioView(PermissionRequiredMixin, FilterView):
model = User
filterset_class = UsuarioFilterSet
permission_required = ('base.list_appconfig',)
paginate_by = 10
def get_filterset_kwargs(self, filterset_class):
super(PesquisarUsuarioView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
qs = self.get_queryset().order_by('username').distinct()
kwargs.update({
'queryset': qs,
})
return kwargs
def get_context_data(self, **kwargs):
context = super(PesquisarUsuarioView,
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 usuário encontrado!'
context['title'] = _('Usuários')
return context
def get(self, request, *args, **kwargs):
super(PesquisarUsuarioView, self).get(request)
data = self.filterset.data
url = ''
if data:
url = "&" + str(self.request.META['QUERY_STRING'])
if url.startswith("&page"):
ponto_comeco = url.find('username=') - 1
url = url[ponto_comeco:]
context = self.get_context_data(filter=self.filterset,
object_list=self.object_list,
filter_url=url,
numero_res=len(self.object_list)
)
context['show_results'] = show_results_filter_set(
self.request.GET.copy())
return self.render_to_response(context)
class CreateUsuarioView(PermissionRequiredMixin, CreateView):
model = get_user_model()
form_class = UsuarioCreateForm
success_message = 'Usuário criado com sucesso!'
fail_message = 'Usuário não criado!'
permission_required = ('base.add_appconfig',)
def get_success_url(self):
return reverse('sapl.base:usuario')
def form_valid(self, form):
data = form.cleaned_data
new_user = get_user_model().objects.create(
username=data['username'],
email=data['email']
)
new_user.first_name = data['firstname']
new_user.last_name = data['lastname']
new_user.set_password(data['password1'])
new_user.is_superuser = False
new_user.is_staff = False
new_user.save()
groups = Group.objects.filter(id__in=data['roles'])
for g in groups:
g.user_set.add(new_user)
messages.success(self.request, self.success_message)
return HttpResponseRedirect(self.get_success_url())
def form_invalid(self, form):
messages.error(self.request, self.fail_message)
return super().form_invalid(form)
7 years ago
class DeleteUsuarioView(PermissionRequiredMixin, DeleteView):
model = get_user_model()
template_name = "crud/confirm_delete.html"
permission_required = ('base.delete_appconfig',)
success_url = reverse_lazy('sapl.base:usuario')
success_message = "Usuário removido com sucesso!"
def delete(self, request, *args, **kwargs):
try:
super(DeleteUsuarioView, self).delete(request, *args, **kwargs)
except ProtectedError as exception:
error_url = reverse_lazy('sapl.base:user_delete', kwargs={
'pk': self.kwargs['pk']})
error_message = "O usuário não pode ser removido, pois é referenciado por:<br><ul>"
for e in exception.protected_objects:
error_message += '<li>{} - {}</li>'.format(
e._meta.verbose_name, e
)
error_message += '</ul>'
messages.error(self.request, error_message)
return HttpResponseRedirect(error_url)
messages.success(self.request, self.success_message)
return HttpResponseRedirect(self.success_url)
@property
def cancel_url(self):
return reverse('sapl.base:user_edit',
kwargs={'pk': self.kwargs['pk']})
class EditUsuarioView(PermissionRequiredMixin, UpdateView):
model = get_user_model()
form_class = UsuarioEditForm
success_message = 'Usuário editado com sucesso!'
permission_required = ('base.change_appconfig',)
def get_success_url(self):
return reverse('sapl.base:usuario')
def get_initial(self):
initial = super(EditUsuarioView, self).get_initial()
user = get_user_model().objects.get(id=self.kwargs['pk'])
roles = [str(g.id) for g in user.groups.all()]
initial['roles'] = roles
initial['user_active'] = user.is_active
return initial
def form_valid(self, form):
user = form.save(commit=False)
data = form.cleaned_data
# new_user.first_name = data['firstname']
# new_user.last_name = data['lastname']
if data['password1']:
user.set_password(data['password1'])
if data['user_active'] == 'True' and not user.is_active:
user.is_active = True
elif data['user_active'] == 'False' and user.is_active:
user.is_active = False
user.save()
for g in user.groups.all():
g.user_set.remove(user)
groups = Group.objects.filter(id__in=data['roles'])
for g in groups:
g.user_set.add(user)
messages.success(self.request, self.success_message)
return super(EditUsuarioView, self).form_valid(form)
class CasaLegislativaCrud(CrudAux):
model = CasaLegislativa
class BaseMixin(CrudAux.BaseMixin):
list_field_names = ['codigo', 'nome', 'sigla']
form_class = CasaLegislativaForm
8 years ago
class ListView(CrudAux.ListView):
8 years ago
def get(self, request, *args, **kwargs):
casa = get_casalegislativa()
if casa:
return HttpResponseRedirect(
reverse('sapl.base:casalegislativa_detail',
kwargs={'pk': casa.pk}))
else:
return HttpResponseRedirect(
reverse('sapl.base:casalegislativa_create'))
class DetailView(CrudAux.DetailView):
def get(self, request, *args, **kwargs):
return HttpResponseRedirect(
reverse('sapl.base:casalegislativa_update',
kwargs={'pk': self.kwargs['pk']}))
class HelpTopicView(TemplateView):
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
logger = logging.getLogger(__name__)
def get_template_names(self):
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de &#34;Acompanhar Matéria&#34; na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: &#34;Joe Q. Public&#34; &lt;john.q.public@example.com&gt; portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma (&#34;Joe Q. Public&#34;, &#34;john.q.public@exemple.com&#34;) então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public &lt;john.q.public@example.com&gt; ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
username = self.request.user.username
topico = self.kwargs['topic']
try:
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de &#34;Acompanhar Matéria&#34; na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: &#34;Joe Q. Public&#34; &lt;john.q.public@example.com&gt; portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma (&#34;Joe Q. Public&#34;, &#34;john.q.public@exemple.com&#34;) então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public &lt;john.q.public@example.com&gt; ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.debug('user=' + username +
'. Tentando obter template %s.html.' % topico)
get_template('ajuda/%s.html' % topico)
Adiciona logging em nível de aplicação (#2309) * Mudanças no arquivo settings para uso de Log Loggers inseridos em sessao/views.py alteracao no gitignore adicionados loggers em audiencia e base terminados os logs de comissoes loggers na view do app materia loggers feitos nos forms de materia e no app norma adicionado logging no app painel adicionados loggins no app parlamentares adicionados loggins no app protocoloadm adicionados loggins no app redireciona_urls adicionados loggings no app relatorios adicionados loggings no app rules adicionados loggings no app api adicionados loggings nos apps crud e compilacao Fix typo Adicionando informação de host no log (em progresso) Comentando trecho com problema correcao do logger, tirando-o das funcoes e colocando na classe correcao do logger, tirando-o das funcoes e colocando na classe concluido Conserta log errado no import Remove arquivo desnecessário Remove arquivo desnecessário Remove chamada ao pdb Adiciona logger ausente em DevolverProposicaoForm correcoes nos loggins para api, audiencia e base correcoes nos loggins para comissoes correcoes nos loggins para compilacao correcoes nos loggins para crud correcoes nos loggins para materia correcoes nos loggings para o arquivo views.py de norma correção de bugs. Correção de bugs no funcionamento do log. Informação de IP do host ainda não funciona corretamente. Com endereço IP. Faltando confirmar se o endereço está correto. correcoes nos loggings para o app norma correcoes nos loggings para os apps painel e parlamentares correcoes nos loggings para o app protocoloadm mais correcoes nos loggings para o app protocoloadm correcoes nos loggings para o app redireciona_urls correcoes nos loggins para o app relatorios correcoes nos loggins em forms de parlamentares correcoes nos loggins em views de protocoloadm correcao nos loggings de sessao inserido o hostname no log testando logger com username Inserção username no log. Incompleto. logging username nos apps materia, norma e painel alteracao no padrao de logging até painel alteracao no padrao de logging novas correcoes nos loggings * correções
6 years ago
except TemplateDoesNotExist as e:
Fix #2342 (#2354) * Fix #2432 Insere verificação de serviço de email configurado. Assume que EMAIL_HOST vazio é serviço desativado não enviando, assim, email na edição/adição de autor, bem como desativando acesso via get/post e por link de &#34;Acompanhar Matéria&#34; na lista de resultados da pesquisa de matéria e na tela de detalhes de matérias. Comportamento análogo para Documentos Administrativos. * impl test de conexão * Corrige tipo de remetente rementente de um email é único e seu envio não é feito através de uma lista... estudando a execução do send_mail descobri a RFC 2822 que define rementente da seguinte forma: From: &#34;Joe Q. Public&#34; &lt;john.q.public@example.com&gt; portanto, ou se envia uma string neste formato, o que faz com que mais execução deva ser feita para um padrão interno de processamento, ou envia-se uma tupla e não uma lista da seguinte forma (&#34;Joe Q. Public&#34;, &#34;john.q.public@exemple.com&#34;) então por que com um servidor configurado o remetente estava funcionando? possivelmente ninguem ainda tinha seguindo o formato completo acima apresentado na definição de EMAIL_SEND_USER... fazendo isso: EMAIL_SEND_USER = john.q.public@example.com em vez disso: EMAIL_SEND_USER = Joe Q. Public &lt;john.q.public@example.com&gt; ocorre que esta segunda forma (a correta), melhor apresenta o email ao usuário, colocando em sua caixa de entrada de email um nome significativo e não o username. * faz teste de conexão de email apenas no início do sapl
6 years ago
self.logger.error(
'user=' + username + '. Erro ao obter template {}.html. Template não existe. '.format(topico) + str(e))
raise Http404()
return ['ajuda/%s.html' % topico]
class AppConfigCrud(CrudAux):
model = AppConfig
class BaseMixin(CrudAux.BaseMixin):
form_class = ConfiguracoesAppForm
list_url = ''
create_url = ''
def form_valid(self, form):
recibo_prop_atual = AppConfig.objects.last().receber_recibo_proposicao
recibo_prop_novo = self.request.POST['receber_recibo_proposicao']
if recibo_prop_novo == 'False' and recibo_prop_atual:
props = Proposicao.objects.filter(hash_code='')
for prop in props:
self.gerar_hash(prop)
return super().form_valid(form)
def gerar_hash(self, inst):
inst.save()
if inst.texto_original:
try:
inst.hash_code = gerar_hash_arquivo(
inst.texto_original.path, str(inst.pk))
except IOError:
raise ValidationError("Existem proposicoes com arquivos inexistentes.")
elif inst.texto_articulado.exists():
ta = inst.texto_articulado.first()
inst.hash_code = 'P' + ta.hash() + SEPARADOR_HASH_PROPOSICAO + str(inst.pk)
inst.save()
class CreateView(CrudAux.CreateView):
def get(self, request, *args, **kwargs):
app_config = AppConfig.objects.first()
if not app_config:
app_config = AppConfig()
app_config.save()
return HttpResponseRedirect(
reverse('sapl.base:appconfig_update',
kwargs={'pk': app_config.pk}))
def post(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)
class ListView(CrudAux.ListView):
def get(self, request, *args, **kwargs):
return HttpResponseRedirect(reverse('sapl.base:appconfig_create'))
class DetailView(CrudAux.DetailView):
def get(self, request, *args, **kwargs):
return HttpResponseRedirect(reverse('sapl.base:appconfig_create'))
class DeleteView(CrudAux.DeleteView):
def get(self, request, *args, **kwargs):
return HttpResponseRedirect(reverse('sapl.base:appconfig_create'))
class SaplSearchView(SearchView):
results_per_page = 10
def get_context(self):
context = super(SaplSearchView, self).get_context()
if 'models' in self.request.GET:
models = self.request.GET.getlist('models')
else:
models = []
context['models'] = ''
for m in models:
context['models'] = context['models'] + '&models=' + m
return context
class AlterarSenha(FormView):
from sapl.settings import LOGIN_URL
form_class = AlterarSenhaForm
template_name = 'base/alterar_senha.html'
success_url = LOGIN_URL
def get_initial(self):
initial = super(AlterarSenha, self).get_initial()
initial['username'] = self.request.user
return initial
def form_valid(self, form):
new_password = form.cleaned_data['new_password1']
user = self.request.user
user.set_password(new_password)
user.save()
7 years ago
return super().form_valid(form)
STATIC_LOGO = os.path.join(settings.STATIC_URL, 'img/logo.png')
class LogotipoView(RedirectView):
def get_redirect_url(self, *args, **kwargs):
casa = get_casalegislativa()
logo = casa and casa.logotipo and casa.logotipo.name
return os.path.join(settings.MEDIA_URL, logo) if logo else STATIC_LOGO