Browse Source

Remove 'None' in some fields. Validate some fields in Pesquisa de Matéria. Add Autoria and Relatoria research fields in Pesquisa Matéria.

pull/202/head
Eduardo Calil 9 years ago
committed by Marcio Mazza
parent
commit
82199e1365
  1. 10
      materia/models.py
  2. 88
      materia/views.py
  3. 2
      templates/materia/pesquisa_materia_list.html

10
materia/models.py

@ -505,9 +505,15 @@ class UnidadeTramitacao(models.Model):
verbose_name_plural = _('Unidades de Tramitação')
def __str__(self):
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)
}
'orgao': xstr(self.orgao), 'comissao': xstr(self.comissao)}
class Tramitacao(models.Model):

88
materia/views.py

@ -1861,8 +1861,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',
)
@ -1962,27 +1961,71 @@ 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']:
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']:
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']:
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']:
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']:
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')
@ -1996,8 +2039,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']
@ -2016,9 +2059,38 @@ class PesquisaMateriaListView(FormMixin, ListView):
paginate_by = 10
def get_queryset(self):
# import ipdb; ipdb.set_trace()
kwargs = self.request.session['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(
**kwargs)
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(
@ -2038,3 +2110,7 @@ class MateriaTaView(IntegracaoTaView):
class ProposicaoTaView(IntegracaoTaView):
model = Proposicao
class RelatoriaTaView(IntegracaoTaView):
model = Relatoria

2
templates/materia/pesquisa_materia_list.html

@ -11,7 +11,7 @@
<td>
<strong><a href="{% url 'materialegislativa:detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br>
{{ m.ementa }}</br>
<strong>Localização Atual:</strong> {{m.local_origem_externa}}</br>
<strong>Localização Atual:</strong> {{m.local_origem_externa|default_if_none:"Não Informada"}}</br>
</tr>
{% endfor %}
</table>

Loading…
Cancel
Save