Browse Source

WIP

pull/282/head
Eduardo Calil 9 years ago
parent
commit
b849151617
  1. 174
      materia/forms.py
  2. 70
      materia/views.py
  3. 14
      templates/materia/materialegislativa_filter.html

174
materia/forms.py

@ -578,116 +578,6 @@ class AutoriaForm(ModelForm):
*args, **kwargs)
class MateriaLegislativaPesquisaForm(ModelForm):
autor = forms.CharField(widget=forms.HiddenInput(), required=False)
localizacao = forms.ModelChoiceField(
label='Localização Atual',
required=False,
queryset=UnidadeTramitacao.objects.all(),
empty_label='Selecione',
)
situacao = forms.ModelChoiceField(
label='Situação',
required=False,
queryset=StatusTramitacao.objects.all(),
empty_label='Selecione',
)
em_tramitacao = forms.ChoiceField(required=False,
label='Tramitando',
choices=em_tramitacao(),
widget=forms.Select(
attrs={'class': 'selector'}))
publicacao_inicial = forms.DateField(label=u'Data Publicação Inicial',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}))
publicacao_final = forms.DateField(label=u'Data Publicação Final',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}))
apresentacao_inicial = forms.DateField(label=u'Data Apresentação Inicial',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}))
apresentacao_final = forms.DateField(label=u'Data Apresentação Final',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}))
class Meta:
model = MateriaLegislativa
fields = ['tipo',
'numero',
'ano',
'numero_protocolo',
'apresentacao_inicial',
'apresentacao_final',
'publicacao_inicial',
'publicacao_final',
'autor',
'local_origem_externa',
'localizacao',
'em_tramitacao',
'situacao']
def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('tipo', 12)])
row2 = crispy_layout_mixin.to_row(
[('numero', 4),
('ano', 4),
('numero_protocolo', 4)])
row3 = crispy_layout_mixin.to_row(
[('apresentacao_inicial', 6),
('apresentacao_final', 6)])
row4 = crispy_layout_mixin.to_row(
[('publicacao_inicial', 6),
('publicacao_final', 6)])
row5 = crispy_layout_mixin.to_row(
[('autor', 0),
(Button('pesquisar',
'Pesquisar Autor',
css_class='btn btn-primary btn-sm'), 2),
(Button('limpar',
'limpar Autor',
css_class='btn btn-primary btn-sm'), 10)])
row6 = crispy_layout_mixin.to_row(
[('local_origem_externa', 6),
('localizacao', 6)])
row7 = crispy_layout_mixin.to_row(
[('em_tramitacao', 6),
('situacao', 6)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Pesquisa Básica'),
row1, row2, row3, row4,
HTML(sapl.utils.autor_label),
HTML(sapl.utils.autor_modal),
row5, row6, row7,
form_actions(save_label='Pesquisar'))
)
super(MateriaLegislativaPesquisaForm, self).__init__(
*args, **kwargs)
class MateriaLegislativaPesquisaFields(FilterSet):
numero = django_filters.CharFilter(required=False,
@ -708,22 +598,14 @@ class MateriaLegislativaPesquisaFields(FilterSet):
help_text=""
)
data_apresentacao = django_filters.DateFilter(
data_apresentacao = django_filters.DateFromToRangeFilter(
label=u'Data de Apresentação',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}),
help_text="")
data_publicacao = django_filters.DateFilter(
data_publicacao = django_filters.DateFromToRangeFilter(
label=u'Data da Publicação',
input_formats=['%d/%m/%Y'],
required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}),
help_text="")
autoria__autor = django_filters.ModelChoiceFilter(
@ -795,7 +677,7 @@ class MateriaLegislativaPesquisaFields(FilterSet):
class Meta:
models = MateriaLegislativa
fields = ['tipo',
fields = {'tipo',
'ano',
'numero_protocolo',
'data_apresentacao',
@ -808,15 +690,59 @@ class MateriaLegislativaPesquisaFields(FilterSet):
'tramitacao__status',
'autoria__autor__tipo',
'autoria__partido',
'local_origem_externa']
'local_origem_externa'}
# def __init__(self, *args, **kwargs):
# row1 = crispy_layout_mixin.to_row(
# [('tipo', 12)])
# row2 = crispy_layout_mixin.to_row(
# [('numero', 4),
# ('ano', 4),
# ('numero_protocolo', 4)])
# row3 = crispy_layout_mixin.to_row(
# [('data_apresentacao', 6),
# ('data_publicacao', 6)])
# row4 = crispy_layout_mixin.to_row(
# [('em_tramitacao', 6),
# ('ementa', 6)])
# row5 = crispy_layout_mixin.to_row(
# [('autoria__autor__id', 0),
# (Button('pesquisar',
# 'Pesquisar Autor',
# css_class='btn btn-primary btn-sm'), 2),
# (Button('limpar',
# 'limpar Autor',
# css_class='btn btn-primary btn-sm'), 10)])
# row6 = crispy_layout_mixin.to_row(
# [('relatoria__parlamentar__id', 6),
# ('tramitacao__unidade_tramitacao_destino', 6)])
# row7 = crispy_layout_mixin.to_row(
# [('tramitacao__status', 6),
# ('autoria__autor__tipo', 6)])
# row8 = crispy_layout_mixin.to_row(
# [('autoria__partido', 6),
# ('local_origem_externa', 6)])
# self.helper = FormHelper()
# self.helper.layout = Layout(
# Fieldset(_('Pesquisa Básica'),
# row1, row2, row3, row4,
# HTML(sapl.utils.autor_label),
# HTML(sapl.utils.autor_modal),
# row5, row6, row7, row8,
# form_actions(save_label='Pesquisar'))
# )
def pega_ultima_tramitacao():
ultimas_tramitacoes = Tramitacao.objects.values(
'materia_id').annotate(data_encaminhamento=Max(
'data_encaminhamento'),
id=Max('id'))
lista = [ids.get('id') for ids in ultimas_tramitacoes]
id=Max('id')).values_list('id')
lista = [item for sublist in ultimas_tramitacoes for item in sublist]
return lista

70
materia/views.py

@ -1216,22 +1216,23 @@ class MateriaLegislativaPesquisaView(FilterView):
filterset_class = self.get_filterset_class()
self.filterset = self.get_filterset(filterset_class)
status_tramitacao = self.filterset.data.get('tramitacao__status')
unidade_destino = self.filterset.data.get(
'tramitacao__unidade_tramitacao_destino')
if (status_tramitacao and status_tramitacao != '' and
unidade_destino and unidade_destino != ''):
data = self.filterset.data
status_tramitacao = data.get('tramitacao__status')
unidade_destino = data.get('tramitacao__unidade_tramitacao_destino')
if status_tramitacao and unidade_destino:
lista = filtra_tramitacao_destino_and_status(status_tramitacao,
unidade_destino)
self.object_list = self.filterset.qs.filter(
id__in=lista).distinct().order_by('tipo', 'numero', 'ano')
elif status_tramitacao and status_tramitacao != '':
elif status_tramitacao:
lista = filtra_tramitacao_status(status_tramitacao)
self.object_list = self.filterset.qs.filter(
id__in=lista).distinct().order_by('tipo', 'numero', 'ano')
elif unidade_destino and unidade_destino != '':
elif unidade_destino:
lista = filtra_tramitacao_destino(unidade_destino)
self.object_list = self.filterset.qs.filter(
id__in=lista).distinct().order_by('tipo', 'numero', 'ano')
@ -1239,46 +1240,47 @@ class MateriaLegislativaPesquisaView(FilterView):
self.object_list = self.filterset.qs.order_by(
'tipo', 'numero', 'ano')
if (self.filterset.data and
self.filterset.data.get('numero') is not None):
numero = self.filterset.data.get('numero')
numero_protocolo = self.filterset.data.get('numero_protocolo')
ano = self.filterset.data.get('ano')
tipo = self.filterset.data.get('tipo')
data_a = self.filterset.data.get('data_apresentacao')
data_p = self.filterset.data.get('data_publicacao')
autor = self.filterset.data.get('autoria__autor')
tipo_autor = self.filterset.data.get('autoria__autor__tipo')
partido = self.filterset.data.get('autoria__partido')
relatoria = self.filterset.data.get(
if (data and data.get('numero') is not None):
numero = data.get('numero')
numero_protocolo = data.get('numero_protocolo')
ano = data.get('ano')
tipo = data.get('tipo')
data_a1 = data.get('data_apresentacao_1')
data_a0 = data.get('data_apresentacao_0')
data_p = data.get('data_publicacao')
autor = data.get('autoria__autor')
tipo_autor = data.get('autoria__autor__tipo')
partido = data.get('autoria__partido')
relatoria = data.get(
'relatoria__parlamentar__id')
origem = self.filterset.data.get('local_origem_externa')
destino = self.filterset.data.get(
origem = data.get('local_origem_externa')
destino = data.get(
'tramitacao__unidade_tramitacao_destino')
status = self.filterset.data.get('tramitacao__status')
em_tram = self.filterset.data.get('em_tramitacao')
status = data.get('tramitacao__status')
em_tram = data.get('em_tramitacao')
ementa = self.filterset.data.get('ementa')
import ipdb; ipdb.set_trace()
u1 = "&numero="+numero+"&numero_protocolo="+numero_protocolo
u2 = "&ano="+ano+"&tipo="+tipo+"&data_apresentacao="+data_a+"&"
u2 = "&ano="+ano+"&tipo="+tipo+"&data_apresentacao_1="+data_a1+"&"
u3 = "data_publicacao="+data_p+"&autoria__autor="+autor+"&"
u4 = "autoria__autor__tipo="+tipo_autor+"&"
u5 = "autoria__partido="+partido+"&"
u6 = "relatoria__parlamentar__id="+relatoria+"&"
u7 = "local_origem_externa="+origem+"&"
u8 = "tramitacao__unidade_tramitacao_destino="+destino+"&"
u9 = "tramitacao__status="+status+"&"
u10 = "em_tramitacao="+em_tram+"&ementa="+ementa
u5 = "autoria__partido="+partido
u6 = "&data_apresentacao_0="+data_a0+"&"
u7 = "relatoria__parlamentar__id="+relatoria+"&"
u8 = "local_origem_externa="+origem+"&"
u9 = "tramitacao__unidade_tramitacao_destino="+destino+"&"
u10 = "tramitacao__status="+status+"&"
u11 = "em_tramitacao="+em_tram+"&ementa="+ementa
url = u1+u2+u3+u4+u5+u6+u7+u8+u9+u10
url = u1+u2+u3+u4+u5+u6+u7+u8+u9+u10+u11
else:
url = ''
context = self.get_context_data(filter=self.filterset,
object_list=self.object_list,
filter_url=url
filter_url=url,
numero_res=len(self.object_list)
)
return self.render_to_response(context)

14
templates/materia/materialegislativa_filter.html

@ -9,7 +9,7 @@
<h1><b>Pesquisar Matéria</b></h1>
<br></br>
<form action="" method="get">
{{ filter.form.as_p }}
{{ filter.form | crispy }}
<input type="submit" value="Pesquisar" />
</form>
<p></p>
@ -17,7 +17,12 @@
<thead class="thead-default">
<tr><td><h3>Resultados</h3></td></tr>
</thead>
{% if page_obj|length %}
{% if filter_url %}
<h3>Pesquisa concluída com sucesso! Foram encontradas {{numero_res}} matérias.</h3>
{% endif %}
{% for m in page_obj %}
<tr>
<td>
<strong><a href="{% url 'materialegislativa:detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br>
@ -26,6 +31,13 @@
<p></p>
</tr>
{% endfor %}
{% else %}
<tr>
<td>
<h3>Nenhuma matéria encontrada com essas especificações</h3>
</tr>
{% endif %}
</table>
{% include "paginacao_pesquisa_materia.html" %}

Loading…
Cancel
Save