From 29a95f1639be6196e5f9bbc5daa9b21e99a66335 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Mon, 1 Feb 2016 15:52:22 -0200 Subject: [PATCH] =?UTF-8?q?Remove=20'None'=20in=20some=20fields.=20Validat?= =?UTF-8?q?e=20some=20fields=20in=20Pesquisa=20de=20Mat=C3=A9ria.=20Add=20?= =?UTF-8?q?Autoria=20and=20Relatoria=20research=20fields=20in=20Pesquisa?= =?UTF-8?q?=20Mat=C3=A9ria.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/models.py | 12 ++- materia/views.py | 108 ++++++++++++++++--- templates/materia/pesquisa_materia_list.html | 2 +- 3 files changed, 102 insertions(+), 20 deletions(-) diff --git a/materia/models.py b/materia/models.py index cfd2150e9..490616868 100644 --- a/materia/models.py +++ b/materia/models.py @@ -505,9 +505,15 @@ class UnidadeTramitacao(models.Model): verbose_name_plural = _('Unidades de Tramitação') def __str__(self): - return _('%(orgao)s - %(comissao)s') % { - 'orgao': xstr(self.orgao), 'comissao': xstr(self.comissao) - } + if not self.orgao and self.comissao: + return _('%(comissao)s') % { + 'comissao': self.comissao} + if self.orgao and not self.comissao: + return _('%(orgao)s') % { + 'orgao': self.orgao} + else: + return _('%(orgao)s - %(comissao)s') % { + 'orgao': xstr(self.orgao), 'comissao': xstr(self.comissao)} class Tramitacao(models.Model): diff --git a/materia/views.py b/materia/views.py index 61d18a199..8f2279edc 100644 --- a/materia/views.py +++ b/materia/views.py @@ -1888,8 +1888,7 @@ class MateriaLegislativaPesquisaForm(forms.Form): relator = forms.ModelChoiceField( label='Relator', required=False, - queryset=Parlamentar.objects.filter( - ativo=True).order_by('nome_parlamentar'), + queryset=Parlamentar.objects.all().order_by('nome_parlamentar'), empty_label='Selecione', ) @@ -1992,30 +1991,74 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView): def post(self, request, *args, **kwargs): kwargs = {} - + form = MateriaLegislativaPesquisaForm() # TODO: Autor, Relator, Localização, Origem if request.POST['tipo']: kwargs['tipo'] = request.POST['tipo'] if request.POST['numero']: - kwargs['numero'] = request.POST['numero'] + try: + int(request.POST['numero']) + except ValueError: + mensagem = "Insira um número inteiro em matéria!" + messages.add_message(request, messages.INFO, mensagem) + return self.render_to_response( + {'form': form}) + else: + kwargs['numero'] = request.POST['numero'] if request.POST['ano']: - kwargs['ano'] = request.POST['ano'] + try: + int(request.POST['ano']) + except ValueError: + mensagem = "Insira uma data válida em Ano da Matéria!" + messages.add_message(request, messages.INFO, mensagem) + return self.render_to_response( + {'form': form}) + else: + kwargs['ano'] = request.POST['ano'] if request.POST['numero_protocolo']: - kwargs['numero_protocolo'] = request.POST['numero_protocolo'] + try: + int(request.POST['numero_protocolo']) + except ValueError: + mensagem = "Insira um Número de Protocolo válido!" + messages.add_message(request, messages.INFO, mensagem) + return self.render_to_response( + {'form': form}) + else: + kwargs['numero_protocolo'] = request.POST['numero_protocolo'] if request.POST['data_apresentacao']: - kwargs['data_apresentacao'] = datetime.strptime( - request.POST['data_apresentacao'], - '%d/%m/%Y').strftime('%Y-%m-%d') + try: + datetime.strptime( + request.POST['data_apresentacao'], + '%d/%m/%Y').strftime('%Y-%m-%d') + except ValueError: + mensagem = "Insira uma Data de Apresentação válida!" + messages.add_message(request, messages.INFO, mensagem) + return self.render_to_response( + {'form': form}) + else: + kwargs['data_apresentacao'] = datetime.strptime( + request.POST['data_apresentacao'], + '%d/%m/%Y').strftime('%Y-%m-%d') if request.POST['data_publicacao']: - kwargs['data_publicacao'] = datetime.strptime( - request.POST['data_publicacao'], - '%d/%m/%Y').strftime('%Y-%m-%d') + try: + datetime.strptime( + request.POST['data_publicacao'], + '%d/%m/%Y').strftime('%Y-%m-%d') + except ValueError: + mensagem = "Insira uma Data de Publicação válida!" + messages.add_message(request, messages.INFO, mensagem) + return self.render_to_response( + {'form': form}) + else: + kwargs['data_publicacao'] = datetime.strptime( + request.POST['data_publicacao'], + '%d/%m/%Y').strftime('%Y-%m-%d') if request.POST['tramitacao']: kwargs['em_tramitacao'] = request.POST['tramitacao'] @@ -2026,8 +2069,8 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView): if request.POST['autor']: kwargs['autoria'] = request.POST['autor'] - # if request.POST['relator']: - # kwargs['relatoria'] = request.POST['relator'] + if request.POST['relator']: + kwargs['relatoria'] = request.POST['relator'] if request.POST['localizacao']: kwargs['local_origem_externa'] = request.POST['localizacao'] @@ -2046,9 +2089,38 @@ class PesquisaMateriaListView(FormMixin, ListView): paginate_by = 10 def get_queryset(self): + # import ipdb; ipdb.set_trace() kwargs = self.request.session['kwargs'] - return MateriaLegislativa.objects.filter( - **kwargs) + id_parlamentar = kwargs.get('relatoria') + if kwargs.get('relatoria'): + kwargs.pop('relatoria') + materias = MateriaLegislativa.objects.filter(**kwargs) + if not kwargs.get('autoria'): + return MateriaLegislativa.objects.filter( + relatoria__parlamentar__id=id_parlamentar, + relatoria__data_destituicao_relator__isnull=True, + relatoria__materia__in=materias) + else: + id_parlamentar_autoria = kwargs.get('autoria') + kwargs.pop('autoria') + materias = MateriaLegislativa.objects.filter(**kwargs) + return MateriaLegislativa.objects.filter( + relatoria__parlamentar__id=id_parlamentar, + relatoria__data_destituicao_relator__isnull=True, + autoria__autor__id=id_parlamentar_autoria, + autoria__materia__in=materias, + relatoria__materia__in=materias) + + if kwargs.get('autoria'): + id_parlamentar = kwargs.get('autoria') + kwargs.pop('autoria') + materias = MateriaLegislativa.objects.filter(**kwargs) + return MateriaLegislativa.objects.filter( + autoria__autor__id=id_parlamentar, + autoria__materia__in=materias) + + else: + return MateriaLegislativa.objects.filter(**kwargs) def get_context_data(self, **kwargs): context = super(PesquisaMateriaListView, self).get_context_data( @@ -2068,3 +2140,7 @@ class MateriaTaView(IntegracaoTaView): class ProposicaoTaView(IntegracaoTaView): model = Proposicao + + +class RelatoriaTaView(IntegracaoTaView): + model = Relatoria diff --git a/templates/materia/pesquisa_materia_list.html b/templates/materia/pesquisa_materia_list.html index 87f2b73c4..6b6cdd188 100644 --- a/templates/materia/pesquisa_materia_list.html +++ b/templates/materia/pesquisa_materia_list.html @@ -11,7 +11,7 @@ {{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}
{{ m.ementa }}
- Localização Atual: {{m.local_origem_externa}}
+ Localização Atual: {{m.local_origem_externa|default_if_none:"Não Informada"}}
{% endfor %}