Browse Source

Refatoração Pauta Reunião

pull/3010/head
João Rodrigues 6 years ago
parent
commit
eeac36418c
  1. 38
      sapl/comissoes/forms.py
  2. 32
      sapl/comissoes/views.py
  3. 77
      sapl/templates/comissoes/pauta.html
  4. 46
      sapl/templates/comissoes/reuniao_detail.html

38
sapl/comissoes/forms.py

@ -1,7 +1,9 @@
import django_filters
import logging import logging
from crispy_forms.layout import Fieldset, Layout
from django import forms from django import forms
from sapl.settings import MAX_DOC_UPLOAD_SIZE
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import transaction 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.base.models import Autor, TipoAutor
from sapl.comissoes.models import (Comissao, Composicao, DocumentoAcessorio, from sapl.comissoes.models import (Comissao, Composicao, DocumentoAcessorio,
Participacao, Reuniao, Periodo) Participacao, Periodo, Reuniao)
from sapl.materia.models import PautaReuniao 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.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): class ComposicaoForm(forms.ModelForm):
@ -416,6 +420,32 @@ class ReuniaoForm(ModelForm):
return self.cleaned_data 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 PautaReuniaoForm(forms.ModelForm):
class Meta: class Meta:

32
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.views.generic.edit import FormMixin, UpdateView
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django_filters.views import FilterView
from sapl.base.models import AppConfig as AppsAppConfig from sapl.base.models import AppConfig as AppsAppConfig
from sapl.comissoes.apps import AppConfig from sapl.comissoes.apps import AppConfig
from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm, from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm,
DocumentoAcessorioCreateForm, DocumentoAcessorioCreateForm,
DocumentoAcessorioEditForm, DocumentoAcessorioEditForm,
ParticipacaoCreateForm, ParticipacaoEditForm, ParticipacaoCreateForm, ParticipacaoEditForm,
PautaReuniaoForm, PeriodoForm, ReuniaoForm) PautaReuniaoForm, PeriodoForm, ReuniaoForm,
PautaReuniaoFilterSet)
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
MasterDetailCrud, MasterDetailCrud,
PermissionRequiredForAppCrudMixin) PermissionRequiredForAppCrudMixin)
from sapl.materia.models import (MateriaLegislativa, Tramitacao, PautaReuniao, from sapl.materia.models import (MateriaLegislativa, Tramitacao, PautaReuniao,
MateriaEmTramitacao) MateriaEmTramitacao)
from sapl.utils import show_results_filter_set
from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio, from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio,
Participacao, Periodo, Reuniao, TipoComissao) Participacao, Periodo, Reuniao, TipoComissao)
@ -218,7 +222,7 @@ class ReuniaoCrud(MasterDetailCrud):
context['mats'] = MateriaLegislativa.objects.filter( context['mats'] = MateriaLegislativa.objects.filter(
pk__in=materias_pk pk__in=materias_pk
).order_by('tipo', '-ano', '-numero') ).order_by('tipo', '-ano', 'numero')
context['num_mats'] = len(context['mats']) context['num_mats'] = len(context['mats'])
context['reuniao_pk'] = self.kwargs['pk'] context['reuniao_pk'] = self.kwargs['pk']
@ -296,8 +300,8 @@ class RemovePautaView(PermissionRequiredMixin, CreateView):
context['materias'] = MateriaLegislativa.objects.filter( context['materias'] = MateriaLegislativa.objects.filter(
pk__in=materias_pk pk__in=materias_pk
).order_by('tipo', '-ano', '-numero') ).order_by('tipo', '-ano', 'numero')
context['num_materias'] = len(context['materias']) context['numero_materias'] = len(context['materias'])
return context return context
@ -319,9 +323,8 @@ class RemovePautaView(PermissionRequiredMixin, CreateView):
return HttpResponseRedirect(success_url) return HttpResponseRedirect(success_url)
class AdicionaPautaView(PermissionRequiredMixin, CreateView): class AdicionaPautaView(PermissionRequiredMixin, FilterView):
model = PautaReuniao filterset_class = PautaReuniaoFilterSet
form_class = PautaReuniaoForm
template_name = 'comissoes/pauta.html' template_name = 'comissoes/pauta.html'
permission_required = ('comissoes.add_reuniao', ) permission_required = ('comissoes.add_reuniao', )
@ -336,12 +339,19 @@ class AdicionaPautaView(PermissionRequiredMixin, CreateView):
context['object'] = Reuniao.objects.get(pk=self.kwargs['pk']) context['object'] = Reuniao.objects.get(pk=self.kwargs['pk'])
context['root_pk'] = context['object'].comissao.pk context['root_pk'] = context['object'].comissao.pk
materias_comissao = lista_materias_comissao(context['object'].comissao.pk) qr = self.request.GET.copy()
materias_pauta = PautaReuniao.objects.filter(reuniao=context['object'])
materias_pauta = PautaReuniao.objects.filter(reuniao=context['object'])
nao_listar = [mp.materia.pk for mp in materias_pauta] 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 return context

77
sapl/templates/comissoes/pauta.html

@ -5,23 +5,72 @@
{% block title %} {% block title %}
<h1 class="page-header"> <h1 class="page-header">
{% if opcao %} {% if opcao %}
Adicionar Matérias à Pauta <small>(Reunião: {{object}})</small> Adicionar Matérias à Pauta <small>(Reunião: {{ object }})</small>
{% else %} {% else %}
Remover Matérias da Pauta <small>(Reunião: {{object}})</small> Remover Matérias da Pauta <small>(Reunião: {{ object }})</small>
{% endif %} {% endif %}
</h1> </h1>
{% endblock %} {% endblock %}
{% block detail_content %} {% block detail_content %}
{% if opcao %}
{% if not show_results %}
{% crispy filter.form %}
{% endif %}
{% if show_results %}
{% if numero_resultados > 0 %}
{% if numero_resultados == 1 %}
<div style="text-align: right;"><b>Pesquisa concluída com sucesso! Foi encontrada 1 matéria disponível.</b></div><br>
{% else %}
<div style="text-align: right;">
<b>Pesquisa concluída com sucesso! Foram encontradas {{ numero_resultados }} matérias disponíveis.</b>
</div>
<br>
{% endif %}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset>
<legend>Matérias para Adicionar à Pauta</legend>
<table class="table table-striped table-hover">
<div class="controls">
<div class="checkbox">
<label for="id_check_all">
<input type="checkbox" id="id_check_all" onchange="checkAll(this)"/> Marcar/Desmarcar Todos
</label>
</div>
</div>
<thead><tr><th>Matéria</th></tr></thead>
<tbody>
{% for materia_t in object_list %}
<tr>
<td>
<input type="checkbox" name="materia_id" value="{{ materia_t.materia.id }}" {% if check %} checked {% endif %}/>
{{ materia_t.materia.tipo.sigla }}
{{ materia_t.materia.numero }}/{{ materia_t.materia.ano }} - {{ materia_t.materia.tipo.descricao }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</fieldset>
<input type="submit" value="Salvar" class="btn btn-primary"S>
</form>
{% else %}
<br><div style="text-align: center"><b>Nenhuma matéria disponível encontrada.</b></div>
{% endif %}
{% endif %}
{% else %}
{% if materias %} {% if materias %}
{% if num_materias == 1 %} {% if numero_materias == 1 %}
<b>Há {{num_materias}} matéria disponível.</b> <br><br> <div style="text-align: right;"><b>Há 1 matéria disponível.</b></div><br>
{% else %} {% else %}
<b>Há {{num_materias}} matérias disponíveis.</b> <br><br> <div style="text-align: right;"><b>Há {{ numero_materias }} matérias disponíveis.</b></div><br>
{% endif %} {% endif %}
<form method="POST" enctype="multipart/form-data"> <form method="POST" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<fieldset> <fieldset>
<legend>Matérias para Remover da Pauta</legend>
<table class="table table-striped table-hover"> <table class="table table-striped table-hover">
<div class="controls"> <div class="controls">
<div class="checkbox"> <div class="checkbox">
@ -30,31 +79,27 @@
</label> </label>
</div> </div>
</div> </div>
<thead> <thead><tr><th>Matéria</th></tr></thead>
<tr><th>Matéria</th></tr> <tbody>
</thead>
<tbody onload="checks(materias_checked)">
{% for materia in materias %} {% for materia in materias %}
<tr> <tr>
<td> <td>
<input type="checkbox" name="materia_id" value="{{materia.id}}" {% if check %} checked {% endif %}/> <input type="checkbox" name="materia_id" value="{{ materia.id }}" {% if check %} checked {% endif %}/>
{{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}} - {{materia.tipo.descricao}} {{ materia.tipo.sigla }} {{ materia.numero }}/{{ materia.ano }} - {{ materia.tipo.descricao }}
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</fieldset> </fieldset>
{% if opcao %}
<input type="submit" value="Salvar" class="btn btn-primary"S>
{% else %}
<input type="submit" value="Remover" class="btn btn-danger"S> <input type="submit" value="Remover" class="btn btn-danger"S>
{% endif %}
</form> </form>
{% else %} {% else %}
<b>Não há matéria disponível.</b> <br><br> <br><div style="text-align: center;"><b>Não há matéria disponível.</b></div>
{% endif %}
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block extra_js %} {% block extra_js %}
<script language="JavaScript"> <script language="JavaScript">
function checkAll(elem){ function checkAll(elem){

46
sapl/templates/comissoes/reuniao_detail.html

@ -5,56 +5,50 @@
{{ block.super }} {{ block.super }}
<h2 class="legend">Pauta</h2> <h2 class="legend">Pauta</h2>
{% if mats %} {% if mats %}
<p>Total de Registros: <b>{{num_mats}}</b></p> <p>Total de Registros: <b>{{ num_mats }}</b></p>
<table class="table table-striped table-hover"> <table class="table table-striped table-hover">
<thead> <thead><tr><th>Matéria</th></tr></thead>
<tr>
<th>Matéria</th>
</tr>
</thead>
<tbody> <tbody>
{% for mat in mats %} {% for mat in mats %}
<tr> <tr><td><a href="{% url 'sapl.materia:materialegislativa_detail' mat.pk %}">{{mat}}</a></td></tr>
<td>
<a href="{% url 'sapl.materia:materialegislativa_detail' mat.pk %}">{{mat}}</a>
</td>
</tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
{% if perms.comissoes.add_reuniao %} {% if perms.comissoes.add_reuniao %}
<div class="actions btn-group float-right" role="group"> <div class="actions btn-group float-right" role="group">
<a href="{% url 'sapl.comissoes:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria' %}</a> <a href="{% url 'sapl.comissoes:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria(s)' %}</a>
<a href="{% url 'sapl.comissoes:pauta_remove' reuniao_pk %}" class="btn btn-outline-primary btn-outline-danger">{% trans 'Remover Matéria' %}</a> {% if num_mats == 1 %}
<a href="{% url 'sapl.comissoes:pauta_remove' reuniao_pk %}" class="btn btn-outline-primary btn-outline-danger">
{% trans 'Remover Matéria' %}
</a>
{% else %}
<a href="{% url 'sapl.comissoes:pauta_remove' reuniao_pk %}" class="btn btn-outline-primary btn-outline-danger">
{% trans 'Remover Matéria(s)' %}
</a>
{% endif %}
</div> </div>
{% endif %} {% endif %}
{% else %} {% else %}
{% if perms.comissoes.add_reuniao %} {% if perms.comissoes.add_reuniao %}
<a href="{% url 'sapl.comissoes:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria' %}</a> <a href="{% url 'sapl.comissoes:pauta_add' reuniao_pk %}" class="btn btn-outline-primary">{% trans 'Adicionar Matéria(s)' %}</a>
{% endif %} {% endif %}
{% endif %} {% endif %}
<br /><br /> <br /><br />
<h2 class="legend">Documentos Acessórios</h2> <h2 class="legend">Documentos Acessórios</h2>
{% if docs %} {% if docs %}
<p>Total de registros: <b>{{num_docs}}</b></p> <p>Total de registros: <b>{{ num_docs }}</b></p>
<table class="table table-striped table-hover"> <table class="table table-striped table-hover">
<thead> <thead><tr><th>Documento Acessório</th></tr></thead>
<tr>
<th>Documento Acessório</th>
</tr>
</thead>
<tbody> <tbody>
{% for doc in docs %} {% for doc in docs %}
<tr> <tr><td><a href="{% url 'sapl.comissoes:documentoacessorio_detail' doc.pk %}">{{ doc.nome }}</a></td></tr>
<td>
<a href="{% url 'sapl.comissoes:documentoacessorio_detail' doc.pk %}">{{ doc.nome }}</a>
</td>
</tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
{% if perms.comissoes.add_reuniao %} {% if perms.comissoes.add_reuniao %}
<a href="{% url 'sapl.comissoes:documentoacessorio_create' reuniao_pk %}" class="btn btn-outline-primary float-right">{% trans 'Adicionar Documento' %}</a> <a href="{% url 'sapl.comissoes:documentoacessorio_create' reuniao_pk %}" class="btn btn-outline-primary float-right">
{% trans 'Adicionar Documento' %}
</a>
{% endif %} {% endif %}
{% else %} {% else %}
{% if perms.comissoes.add_reuniao %} {% if perms.comissoes.add_reuniao %}

Loading…
Cancel
Save