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. 12
      materia/models.py
  2. 108
      materia/views.py
  3. 2
      templates/materia/pesquisa_materia_list.html

12
materia/models.py

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

108
materia/views.py

@ -1861,8 +1861,7 @@ class MateriaLegislativaPesquisaForm(forms.Form):
relator = forms.ModelChoiceField( relator = forms.ModelChoiceField(
label='Relator', label='Relator',
required=False, required=False,
queryset=Parlamentar.objects.filter( queryset=Parlamentar.objects.all().order_by('nome_parlamentar'),
ativo=True).order_by('nome_parlamentar'),
empty_label='Selecione', empty_label='Selecione',
) )
@ -1962,30 +1961,74 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
kwargs = {} kwargs = {}
form = MateriaLegislativaPesquisaForm()
# TODO: Autor, Relator, Localização, Origem # TODO: Autor, Relator, Localização, Origem
if request.POST['tipo']: if request.POST['tipo']:
kwargs['tipo'] = request.POST['tipo'] kwargs['tipo'] = request.POST['tipo']
if request.POST['numero']: 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']: 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']: 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']: if request.POST['data_apresentacao']:
kwargs['data_apresentacao'] = datetime.strptime( try:
request.POST['data_apresentacao'], datetime.strptime(
'%d/%m/%Y').strftime('%Y-%m-%d') 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']: if request.POST['data_publicacao']:
kwargs['data_publicacao'] = datetime.strptime( try:
request.POST['data_publicacao'], datetime.strptime(
'%d/%m/%Y').strftime('%Y-%m-%d') 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']: if request.POST['tramitacao']:
kwargs['em_tramitacao'] = request.POST['tramitacao'] kwargs['em_tramitacao'] = request.POST['tramitacao']
@ -1996,8 +2039,8 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView):
if request.POST['autor']: if request.POST['autor']:
kwargs['autoria'] = request.POST['autor'] kwargs['autoria'] = request.POST['autor']
# if request.POST['relator']: if request.POST['relator']:
# kwargs['relatoria'] = request.POST['relator'] kwargs['relatoria'] = request.POST['relator']
if request.POST['localizacao']: if request.POST['localizacao']:
kwargs['local_origem_externa'] = request.POST['localizacao'] kwargs['local_origem_externa'] = request.POST['localizacao']
@ -2016,9 +2059,38 @@ class PesquisaMateriaListView(FormMixin, ListView):
paginate_by = 10 paginate_by = 10
def get_queryset(self): def get_queryset(self):
# import ipdb; ipdb.set_trace()
kwargs = self.request.session['kwargs'] kwargs = self.request.session['kwargs']
return MateriaLegislativa.objects.filter( id_parlamentar = kwargs.get('relatoria')
**kwargs) 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): def get_context_data(self, **kwargs):
context = super(PesquisaMateriaListView, self).get_context_data( context = super(PesquisaMateriaListView, self).get_context_data(
@ -2038,3 +2110,7 @@ class MateriaTaView(IntegracaoTaView):
class ProposicaoTaView(IntegracaoTaView): class ProposicaoTaView(IntegracaoTaView):
model = Proposicao model = Proposicao
class RelatoriaTaView(IntegracaoTaView):
model = Relatoria

2
templates/materia/pesquisa_materia_list.html

@ -11,7 +11,7 @@
<td> <td>
<strong><a href="{% url 'materialegislativa:detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br> <strong><a href="{% url 'materialegislativa:detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br>
{{ m.ementa }}</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> </tr>
{% endfor %} {% endfor %}
</table> </table>

Loading…
Cancel
Save