Browse Source

Conclui a implementacao da pesquisa de sessao plenaria

pull/447/head
Eduardo Calil 10 years ago
committed by Edward Ribeiro
parent
commit
baa8f8c498
  1. 17
      sapl/utils.py
  2. 33
      sessao/forms.py
  3. 3
      sessao/urls.py
  4. 61
      sessao/views.py
  5. 47
      templates/sessao/sessaoplenaria_filter.html
  6. 7
      templates/sessao/sessaoplenaria_list.html

17
sapl/utils.py

@ -131,6 +131,23 @@ UF = [
RANGE_ANOS = [(year, year) for year in range(date.today().year, 1889, -1)] RANGE_ANOS = [(year, year) for year in range(date.today().year, 1889, -1)]
RANGE_MESES = [
(1, 'Janeiro'),
(2, 'Fevereiro'),
(3, 'Março'),
(4, 'Abril'),
(5, 'Maio'),
(6, 'Junho'),
(7, 'Julho'),
(8, 'Agosto'),
(9, 'Setembro'),
(10, 'Outubro'),
(11, 'Novembro'),
(12, 'Dezembro'),
]
RANGE_DIAS_MES = [(n, n) for n in range(1, 32)]
TIPOS_TEXTO_PERMITIDOS = ( TIPOS_TEXTO_PERMITIDOS = (
'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.text',
'application/x-vnd.oasis.opendocument.text', 'application/x-vnd.oasis.opendocument.text',

33
sessao/forms.py

@ -64,9 +64,21 @@ from crispy_forms.layout import Fieldset, Layout
import crispy_layout_mixin import crispy_layout_mixin
from crispy_layout_mixin import form_actions from crispy_layout_mixin import form_actions
from sapl.utils import RANGE_MESES, RANGE_DIAS_MES
from .models import SessaoPlenaria from .models import SessaoPlenaria
def pega_anos():
anos_list = SessaoPlenaria.objects.all().dates('data_inicio', 'year')
anos = [(k.year, k.year) for k in anos_list]
return anos
ANO_CHOICES = [('', '---------')] + pega_anos()
MES_CHOICES = [('', '---------')] + RANGE_MESES
DIA_CHOICES = [('', '---------')] + RANGE_DIAS_MES
class PresencaForm(forms.Form): class PresencaForm(forms.Form):
presenca = forms.CharField(required=False, initial=False) presenca = forms.CharField(required=False, initial=False)
parlamentar = forms.CharField(required=False, max_length=20) parlamentar = forms.CharField(required=False, max_length=20)
@ -113,20 +125,23 @@ class VotacaoEditForm(forms.Form):
pass pass
class PesquisaSessaoPlenaria(django_filters.FilterSet): class SessaoPlenariaFilterSet(django_filters.FilterSet):
data_inicio__year = django_filters.ChoiceFilter(required=False,
label=u'Ano',
choices=ANO_CHOICES)
data_inicio__month = django_filters.ChoiceFilter(required=False,
label=u'Mês',
choices=MES_CHOICES)
data_inicio__day = django_filters.ChoiceFilter(required=False,
label=u'Dia',
choices=DIA_CHOICES)
class Meta: class Meta:
model = SessaoPlenaria model = SessaoPlenaria
fields = ['data_inicio__year', fields = ['tipo']
'data_inicio__month',
'data_inicio__day',
'tipo',
]
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(PesquisaSessaoPlenaria, self).__init__(*args, **kwargs) super(SessaoPlenariaFilterSet, self).__init__(*args, **kwargs)
# self.filters['tipo'].label = 'Tipo de Matéria'
row1 = crispy_layout_mixin.to_row( row1 = crispy_layout_mixin.to_row(
[('data_inicio__year', 3), [('data_inicio__year', 3),

3
sessao/urls.py

@ -9,6 +9,7 @@ from sessao.views import (EditMateriaOrdemDiaView,
OradorExpedienteCrud, PainelView, OradorExpedienteCrud, PainelView,
PautaExpedienteDetail, PautaOrdemDetail, PautaExpedienteDetail, PautaOrdemDetail,
PautaSessaoDetailView, PautaSessaoListView, PautaSessaoDetailView, PautaSessaoListView,
PesquisarSessaoPlenariaView,
PresencaOrdemDiaView, PresencaView, ResumoView, PresencaOrdemDiaView, PresencaView, ResumoView,
SessaoCrud, SessaoPlenariaView, TipoExpedienteCrud, SessaoCrud, SessaoPlenariaView, TipoExpedienteCrud,
TipoResultadoVotacaoCrud, TipoSessaoCrud, TipoResultadoVotacaoCrud, TipoSessaoCrud,
@ -74,6 +75,8 @@ urlpatterns = [
MateriaOrdemDiaView.as_view(), name='materiaordemdia_create'), MateriaOrdemDiaView.as_view(), name='materiaordemdia_create'),
url(r'^(?P<pk>\d+)/resumo$', url(r'^(?P<pk>\d+)/resumo$',
ResumoView.as_view(), name='resumo'), ResumoView.as_view(), name='resumo'),
url(r'^sessao/pesquisar-sessao$',
PesquisarSessaoPlenariaView.as_view(), name='pesquisar_sessao'),
url(r'^(?P<pk>\d+)/matordemdia/votnom/(?P<oid>\d+)/(?P<mid>\d+)$', url(r'^(?P<pk>\d+)/matordemdia/votnom/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoNominalView.as_view(), name='votacaonominal'), VotacaoNominalView.as_view(), name='votacaonominal'),
url(r'^(?P<pk>\d+)/matordemdia/votnom/edit/(?P<oid>\d+)/(?P<mid>\d+)$', url(r'^(?P<pk>\d+)/matordemdia/votnom/edit/(?P<oid>\d+)/(?P<mid>\d+)$',

61
sessao/views.py

@ -9,6 +9,7 @@ from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import ListView, TemplateView from django.views.generic import ListView, TemplateView
from django.views.generic.edit import FormMixin from django.views.generic.edit import FormMixin
from django_filters.views import FilterView
from rest_framework import generics from rest_framework import generics
import crud.base import crud.base
@ -23,7 +24,8 @@ from sessao.serializers import SessaoPlenariaSerializer
from django.http.response import HttpResponseRedirect from django.http.response import HttpResponseRedirect
from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm, from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm,
MesaForm, PresencaForm, VotacaoEditForm, VotacaoForm, MesaForm, PresencaForm, SessaoPlenariaFilterSet,
VotacaoEditForm, VotacaoForm,
VotacaoNominalForm, ExpedienteMateriaForm) VotacaoNominalForm, ExpedienteMateriaForm)
from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao, from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
IntegranteMesa, MateriaLegislativa, Orador, IntegranteMesa, MateriaLegislativa, Orador,
@ -1865,3 +1867,60 @@ class PautaOrdemDetail(SessaoCrud.CrudDetailView):
'norma': norma, 'norma': norma,
'doc_ace': doc_ace, 'doc_ace': doc_ace,
'tramitacao': tramitacao}) 'tramitacao': tramitacao})
class PesquisarSessaoPlenariaView(FilterView):
model = SessaoPlenaria
filterset_class = SessaoPlenariaFilterSet
paginate_by = 10
def get_filterset_kwargs(self, filterset_class):
super(PesquisarSessaoPlenariaView,
self).get_filterset_kwargs(filterset_class)
kwargs = {'data': self.request.GET or None}
qs = self.get_queryset()
qs = qs.distinct()
kwargs.update({
'queryset': qs,
})
return kwargs
def get_context_data(self, **kwargs):
context = super(PesquisarSessaoPlenariaView,
self).get_context_data(**kwargs)
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages)
return context
def get(self, request, *args, **kwargs):
super(PesquisarSessaoPlenariaView, self).get(request)
# Se a pesquisa estiver quebrando com a paginação
# Olhe esta função abaixo
# Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente
data = self.filterset.data
if (data and data.get('data_inicio__year') is not None):
url = "&" + str(self.request.environ['QUERY_STRING'])
if url.startswith("&page"):
ponto_comeco = url.find('data_inicio__year=') - 1
url = url[ponto_comeco:]
else:
url = ''
context = self.get_context_data(filter=self.filterset,
object_list=self.object_list,
filter_url=url,
numero_res=len(self.object_list)
)
return self.render_to_response(context)

47
templates/sessao/sessaoplenaria_filter.html

@ -0,0 +1,47 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %}{% endblock %}
{% block sections_nav %} {% endblock %}
{% block detail_content %}
<h1><b>Pesquisar Sessão Plenária</b></h1>
<br></br>
{% crispy filter.form %}
{% if filter_url %}
<p></p>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr><td><h3>Resultados</h3></td></tr>
</thead>
{% if page_obj|length %}
{% if numero_res > 1 %}
<h3>Pesquisa concluída com sucesso! Foram encontradas {{numero_res}} sessões.</h3>
{% elif numero_res == 1 %}
<h3>Pesquisa concluída com sucesso! Foi encontrada {{numero_res}} sessão.</h3>
{% endif %}
{% for s in page_obj %}
<tr>
<td>
<strong><a href="{% url 'sessao:sessaoplenaria_detail' s.id %}">{{s.numero}}ª Sessão {{s.tipo.nome}} da {{s.sessao_legislativa.numero}}ª Sessão Legislativa da {{s.legislatura.id}}ª Legislatura</strong></a></br>
<p></p>
</tr>
{% endfor %}
{% else %}
<tr>
<td>
<h3>Nenhuma Sessão Plenária encontrada com essas especificações</h3>
</tr>
{% endif %}
</table>
{% include "paginacao.html" %}
{% endif %}
{% endblock detail_content %}

7
templates/sessao/sessaoplenaria_list.html

@ -0,0 +1,7 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% block more_buttons %}
<a href="{% url 'sessao:pesquisar_sessao' %}" class="btn btn-default">
{% blocktrans with verbose_name=view.verbose_name %} Pesquisar {{ verbose_name }} {% endblocktrans %}
</a>
{% endblock %}
Loading…
Cancel
Save