Browse Source

WIP

pull/282/head
Eduardo Calil 9 years ago
parent
commit
b849151617
  1. 178
      materia/forms.py
  2. 84
      materia/views.py
  3. 28
      templates/materia/materialegislativa_filter.html

178
materia/forms.py

@ -578,116 +578,6 @@ class AutoriaForm(ModelForm):
*args, **kwargs) *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): class MateriaLegislativaPesquisaFields(FilterSet):
numero = django_filters.CharFilter(required=False, numero = django_filters.CharFilter(required=False,
@ -708,22 +598,14 @@ class MateriaLegislativaPesquisaFields(FilterSet):
help_text="" help_text=""
) )
data_apresentacao = django_filters.DateFilter( data_apresentacao = django_filters.DateFromToRangeFilter(
label=u'Data de Apresentação', label=u'Data de Apresentação',
input_formats=['%d/%m/%Y'],
required=False, required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}),
help_text="") help_text="")
data_publicacao = django_filters.DateFilter( data_publicacao = django_filters.DateFromToRangeFilter(
label=u'Data da Publicação', label=u'Data da Publicação',
input_formats=['%d/%m/%Y'],
required=False, required=False,
widget=forms.DateInput(
format='%d/%m/%Y',
attrs={'class': 'dateinput'}),
help_text="") help_text="")
autoria__autor = django_filters.ModelChoiceFilter( autoria__autor = django_filters.ModelChoiceFilter(
@ -795,7 +677,7 @@ class MateriaLegislativaPesquisaFields(FilterSet):
class Meta: class Meta:
models = MateriaLegislativa models = MateriaLegislativa
fields = ['tipo', fields = {'tipo',
'ano', 'ano',
'numero_protocolo', 'numero_protocolo',
'data_apresentacao', 'data_apresentacao',
@ -808,15 +690,59 @@ class MateriaLegislativaPesquisaFields(FilterSet):
'tramitacao__status', 'tramitacao__status',
'autoria__autor__tipo', 'autoria__autor__tipo',
'autoria__partido', '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(): def pega_ultima_tramitacao():
ultimas_tramitacoes = Tramitacao.objects.values( ultimas_tramitacoes = Tramitacao.objects.values(
'materia_id').annotate(data_encaminhamento=Max( 'materia_id').annotate(data_encaminhamento=Max(
'data_encaminhamento'), 'data_encaminhamento'),
id=Max('id')) id=Max('id')).values_list('id')
lista = [ids.get('id') for ids in ultimas_tramitacoes]
lista = [item for sublist in ultimas_tramitacoes for item in sublist]
return lista return lista

84
materia/views.py

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

28
templates/materia/materialegislativa_filter.html

@ -9,7 +9,7 @@
<h1><b>Pesquisar Matéria</b></h1> <h1><b>Pesquisar Matéria</b></h1>
<br></br> <br></br>
<form action="" method="get"> <form action="" method="get">
{{ filter.form.as_p }} {{ filter.form | crispy }}
<input type="submit" value="Pesquisar" /> <input type="submit" value="Pesquisar" />
</form> </form>
<p></p> <p></p>
@ -17,15 +17,27 @@
<thead class="thead-default"> <thead class="thead-default">
<tr><td><h3>Resultados</h3></td></tr> <tr><td><h3>Resultados</h3></td></tr>
</thead> </thead>
{% for m in page_obj %} {% 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>
{{ m.ementa|safe }}</br>
<strong>Localização Atual:</strong> {{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}</br>
<p></p>
</tr>
{% endfor %}
{% else %}
<tr> <tr>
<td> <td>
<strong><a href="{% url 'materialegislativa:detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br> <h3>Nenhuma matéria encontrada com essas especificações</h3>
{{ m.ementa|safe }}</br> </tr>
<strong>Localização Atual:</strong> {{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}</br> {% endif %}
<p></p>
</tr>
{% endfor %}
</table> </table>
{% include "paginacao_pesquisa_materia.html" %} {% include "paginacao_pesquisa_materia.html" %}

Loading…
Cancel
Save