From eeac36418cd2a0ec9756df26a4b1a6f238d39181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Wed, 9 Oct 2019 16:36:15 -0300 Subject: [PATCH] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20Pauta=20Reuni=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/comissoes/forms.py | 38 +++++- sapl/comissoes/views.py | 32 +++-- sapl/templates/comissoes/pauta.html | 135 ++++++++++++------- sapl/templates/comissoes/reuniao_detail.html | 110 +++++++-------- 4 files changed, 197 insertions(+), 118 deletions(-) diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py index 03f40f517..e395fdf90 100644 --- a/sapl/comissoes/forms.py +++ b/sapl/comissoes/forms.py @@ -1,7 +1,9 @@ +import django_filters import logging +from crispy_forms.layout import Fieldset, Layout + from django import forms -from sapl.settings import MAX_DOC_UPLOAD_SIZE from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import transaction @@ -11,10 +13,12 @@ from django.utils.translation import ugettext_lazy as _ from sapl.base.models import Autor, TipoAutor from sapl.comissoes.models import (Comissao, Composicao, DocumentoAcessorio, - Participacao, Reuniao, Periodo) -from sapl.materia.models import PautaReuniao + Participacao, Periodo, Reuniao) +from sapl.crispy_layout_mixin import form_actions, SaplFormHelper, to_row +from sapl.materia.models import MateriaEmTramitacao, PautaReuniao from sapl.parlamentares.models import Legislatura, Mandato, Parlamentar -from sapl.utils import FileFieldCheckMixin +from sapl.settings import MAX_DOC_UPLOAD_SIZE +from sapl.utils import FileFieldCheckMixin, FilterOverridesMetaMixin class ComposicaoForm(forms.ModelForm): @@ -416,6 +420,32 @@ class ReuniaoForm(ModelForm): return self.cleaned_data +class PautaReuniaoFilterSet(django_filters.FilterSet): + + class Meta(FilterOverridesMetaMixin): + model = MateriaEmTramitacao + fields = ['materia__tipo', 'materia__ano', 'materia__numero', 'materia__data_apresentacao'] + + def __init__(self, *args, **kwargs): + super(PautaReuniaoFilterSet, self).__init__(*args, **kwargs) + + self.filters['materia__tipo'].label = "Tipo da Matéria" + self.filters['materia__ano'].label = "Ano da Matéria" + self.filters['materia__data_apresentacao'].label = "Data (Inicial - Final)" + + row1 = to_row([('materia__numero', 4), ('materia__tipo', 4), ('materia__ano', 4)]) + row2 = to_row([('materia__data_apresentacao', 12)]) + + self.form.helper = SaplFormHelper() + self.form.helper.form_method = "GET" + self.form.helper.layout = Layout( + Fieldset( + _("Pesquisa de Matérias"), row1, row2, + form_actions(label="Pesquisar") + ) + ) + + class PautaReuniaoForm(forms.ModelForm): class Meta: diff --git a/sapl/comissoes/views.py b/sapl/comissoes/views.py index 35d066d3c..4d37d735a 100644 --- a/sapl/comissoes/views.py +++ b/sapl/comissoes/views.py @@ -12,18 +12,22 @@ from django.views.generic.detail import DetailView from django.views.generic.edit import FormMixin, UpdateView from django.utils.translation import ugettext_lazy as _ +from django_filters.views import FilterView + from sapl.base.models import AppConfig as AppsAppConfig from sapl.comissoes.apps import AppConfig from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm, DocumentoAcessorioCreateForm, DocumentoAcessorioEditForm, ParticipacaoCreateForm, ParticipacaoEditForm, - PautaReuniaoForm, PeriodoForm, ReuniaoForm) + PautaReuniaoForm, PeriodoForm, ReuniaoForm, + PautaReuniaoFilterSet) from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud, PermissionRequiredForAppCrudMixin) from sapl.materia.models import (MateriaLegislativa, Tramitacao, PautaReuniao, MateriaEmTramitacao) +from sapl.utils import show_results_filter_set from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio, Participacao, Periodo, Reuniao, TipoComissao) @@ -218,7 +222,7 @@ class ReuniaoCrud(MasterDetailCrud): context['mats'] = MateriaLegislativa.objects.filter( pk__in=materias_pk - ).order_by('tipo', '-ano', '-numero') + ).order_by('tipo', '-ano', 'numero') context['num_mats'] = len(context['mats']) context['reuniao_pk'] = self.kwargs['pk'] @@ -296,8 +300,8 @@ class RemovePautaView(PermissionRequiredMixin, CreateView): context['materias'] = MateriaLegislativa.objects.filter( pk__in=materias_pk - ).order_by('tipo', '-ano', '-numero') - context['num_materias'] = len(context['materias']) + ).order_by('tipo', '-ano', 'numero') + context['numero_materias'] = len(context['materias']) return context @@ -319,9 +323,8 @@ class RemovePautaView(PermissionRequiredMixin, CreateView): return HttpResponseRedirect(success_url) -class AdicionaPautaView(PermissionRequiredMixin, CreateView): - model = PautaReuniao - form_class = PautaReuniaoForm +class AdicionaPautaView(PermissionRequiredMixin, FilterView): + filterset_class = PautaReuniaoFilterSet template_name = 'comissoes/pauta.html' permission_required = ('comissoes.add_reuniao', ) @@ -336,12 +339,19 @@ class AdicionaPautaView(PermissionRequiredMixin, CreateView): context['object'] = Reuniao.objects.get(pk=self.kwargs['pk']) context['root_pk'] = context['object'].comissao.pk - materias_comissao = lista_materias_comissao(context['object'].comissao.pk) - materias_pauta = PautaReuniao.objects.filter(reuniao=context['object']) + qr = self.request.GET.copy() + materias_pauta = PautaReuniao.objects.filter(reuniao=context['object']) nao_listar = [mp.materia.pk for mp in materias_pauta] - context['materias'] = materias_comissao.exclude(pk__in=nao_listar) - context['num_materias'] = len(context['materias']) + + context['object_list'] = context['object_list'].filter( + tramitacao__unidade_tramitacao_destino__comissao=context['root_pk'] + ).exclude(materia__pk__in=nao_listar).order_by( + "materia__tipo", "-materia__ano", "materia__numero" + ) + + context['numero_resultados'] = len(context['object_list']) + context['show_results'] = show_results_filter_set(qr) return context diff --git a/sapl/templates/comissoes/pauta.html b/sapl/templates/comissoes/pauta.html index 757c4cf86..63214ff60 100644 --- a/sapl/templates/comissoes/pauta.html +++ b/sapl/templates/comissoes/pauta.html @@ -5,64 +5,109 @@ {% block title %}

{% if opcao %} - Adicionar Matérias à Pauta (Reunião: {{object}}) + Adicionar Matérias à Pauta (Reunião: {{ object }}) {% else %} - Remover Matérias da Pauta (Reunião: {{object}}) + Remover Matérias da Pauta (Reunião: {{ object }}) {% endif %}

{% endblock %} {% block detail_content %} - {% if materias %} - {% if num_materias == 1 %} - Há {{num_materias}} matéria disponível.

- {% else %} - Há {{num_materias}} matérias disponíveis.

+ {% if opcao %} + {% if not show_results %} + {% crispy filter.form %} {% endif %} -
- {% csrf_token %} -
- -
-
- -
+ + {% if show_results %} + {% if numero_resultados > 0 %} + {% if numero_resultados == 1 %} +
Pesquisa concluída com sucesso! Foi encontrada 1 matéria disponível.

+ {% else %} +
+ Pesquisa concluída com sucesso! Foram encontradas {{ numero_resultados }} matérias disponíveis.
-
- - - - {% for materia in materias %} - - - - {% endfor %} - -
Matéria
- - {{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}} - {{materia.tipo.descricao}} -
-
- {% if opcao %} - +
+ {% endif %} + + {% csrf_token %} +
+ Matérias para Adicionar à Pauta + +
+
+ +
+
+ + + {% for materia_t in object_list %} + + + + {% endfor %} + +
Matéria
+ + {{ materia_t.materia.tipo.sigla }} + {{ materia_t.materia.numero }}/{{ materia_t.materia.ano }} - {{ materia_t.materia.tipo.descricao }} +
+
+ +
{% else %} - +
Nenhuma matéria disponível encontrada.
{% endif %} - + {% endif %} {% else %} - Não há matéria disponível.

+ {% if materias %} + {% if numero_materias == 1 %} +
Há 1 matéria disponível.

+ {% else %} +
Há {{ numero_materias }} matérias disponíveis.

+ {% endif %} +
+ {% csrf_token %} +
+ Matérias para Remover da Pauta + +
+
+ +
+
+ + + {% for materia in materias %} + + + + {% endfor %} + +
Matéria
+ + {{ materia.tipo.sigla }} {{ materia.numero }}/{{ materia.ano }} - {{ materia.tipo.descricao }} +
+
+ +
+ {% else %} +
Não há matéria disponível.
+ {% endif %} {% endif %} {% endblock %} + {% block extra_js %} - + } + {% endblock %} diff --git a/sapl/templates/comissoes/reuniao_detail.html b/sapl/templates/comissoes/reuniao_detail.html index be4152e44..bb6e19491 100644 --- a/sapl/templates/comissoes/reuniao_detail.html +++ b/sapl/templates/comissoes/reuniao_detail.html @@ -3,63 +3,57 @@ {% block detail_content %} {{ block.super }} -

Pauta

- {% if mats %} -

Total de Registros: {{num_mats}}

- - - - - - - - {% for mat in mats %} - - - - {% endfor %} - -
Matéria
- {{mat}} -
- {% if perms.comissoes.add_reuniao %} -
- {% trans 'Adicionar Matéria' %} - {% trans 'Remover Matéria' %} -
+

Pauta

+ {% if mats %} +

Total de Registros: {{ num_mats }}

+ + + + {% for mat in mats %} + + {% endfor %} + +
Matéria
{{mat}}
+ {% if perms.comissoes.add_reuniao %} +
+ {% trans 'Adicionar Matéria(s)' %} + {% if num_mats == 1 %} + + {% trans 'Remover Matéria' %} + + {% else %} + + {% trans 'Remover Matéria(s)' %} + {% endif %} - {% else %} - {% if perms.comissoes.add_reuniao %} - {% trans 'Adicionar Matéria' %} - {% endif %} - {% endif %} -

-

Documentos Acessórios

- {% if docs %} -

Total de registros: {{num_docs}}

- - - - - - - - {% for doc in docs %} - - - - {% endfor %} - -
Documento Acessório
- {{ doc.nome }} -
- {% if perms.comissoes.add_reuniao %} - {% trans 'Adicionar Documento' %} - {% endif %} - {% else %} - {% if perms.comissoes.add_reuniao %} - {% trans 'Adicionar Documento' %} - {% endif %} - {% endif %} -

+
+ {% endif %} + {% else %} + {% if perms.comissoes.add_reuniao %} + {% trans 'Adicionar Matéria(s)' %} + {% endif %} + {% endif %} +

+

Documentos Acessórios

+ {% if docs %} +

Total de registros: {{ num_docs }}

+ + + + {% for doc in docs %} + + {% endfor %} + +
Documento Acessório
{{ doc.nome }}
+ {% if perms.comissoes.add_reuniao %} + + {% trans 'Adicionar Documento' %} + + {% endif %} + {% else %} + {% if perms.comissoes.add_reuniao %} + {% trans 'Adicionar Documento' %} + {% endif %} + {% endif %} +

{% endblock detail_content %}