Browse Source

Seleciona tipo de votação para múltiplas matérias ao incluir na Ordem do Dia ou Expediente (#3781)

* Seleciona tipo de votação para múltiplas matérias ao incluir na Ordem do Dia ou Expediente

* Ajustes solicitados na seleção de múltiplas Matérias para Ordem/Expediente

* Update adicionar_varias_materias_expediente.html

* Fix read-only mount on k8s

* Fix recibo proposição e adiciona rate limiter em matéria e norma

* Update forms.py

Alteração do nome do campo todos, conforme solicitação.

* Update adicionar_varias_materias_expediente.html

Ajuste no template por alteração do nome do campo "todos".

* Fix recibo proposição e adiciona rate limiter em matéria e norma

---------

Co-authored-by: root <root@info38.camaranh>
Co-authored-by: Edward Oliveira <edwardr@senado.gov.br>
Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com>
3.1.x
cristian-longhi 2 weeks ago
committed by GitHub
parent
commit
d92cdb71a6
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 19
      sapl/sessao/forms.py
  2. 4
      sapl/sessao/views.py
  3. 22
      sapl/templates/sessao/adicionar_varias_materias_expediente.html

19
sapl/sessao/forms.py

@ -22,7 +22,8 @@ from sapl.materia.models import (MateriaLegislativa, StatusTramitacao,
from sapl.parlamentares.models import Mandato, Parlamentar from sapl.parlamentares.models import Mandato, Parlamentar
from sapl.protocoloadm.models import TipoDocumentoAdministrativo,\ from sapl.protocoloadm.models import TipoDocumentoAdministrativo,\
DocumentoAdministrativo DocumentoAdministrativo
from sapl.sessao.models import Correspondencia from sapl.sessao.models import Correspondencia, AbstractOrdemDia
from sapl.utils import (autor_label, autor_modal, from sapl.utils import (autor_label, autor_modal,
choice_anos_com_sessaoplenaria, choice_anos_com_sessaoplenaria,
FileFieldCheckMixin, FileFieldCheckMixin,
@ -563,6 +564,22 @@ class SessaoPlenariaFilterSet(django_filters.FilterSet):
) )
class AdicionarVariasMateriasForm(forms.Form):
check_all = forms.BooleanField(
label='Marcar/Desmarcar Todos',
required=False,
widget=forms.CheckboxInput(
attrs={'onchange':'checkAll(this)'}),
)
tipo_votacao = forms.ChoiceField(required=False,
choices= AbstractOrdemDia.TIPO_VOTACAO_CHOICES,
initial=False,
widget=forms.RadioSelect(
attrs={'onchange':'marcaTipoVotacao()'}),
)
class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet): class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet):
o = MateriaPesquisaOrderingFilter() o = MateriaPesquisaOrderingFilter()

4
sapl/sessao/views.py

@ -51,7 +51,7 @@ from sapl.settings import TIME_ZONE, RATE_LIMITER_RATE
from sapl.utils import show_results_filter_set, remover_acentos, get_client_ip, \ from sapl.utils import show_results_filter_set, remover_acentos, get_client_ip, \
MultiFormatOutputMixin, PautaMultiFormatOutputMixin, ratelimit_ip MultiFormatOutputMixin, PautaMultiFormatOutputMixin, ratelimit_ip
from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, from .forms import (AdicionarVariasMateriasFilterSet, AdicionarVariasMateriasForm, BancadaForm,
ExpedienteForm, JustificativaAusenciaForm, OcorrenciaSessaoForm, ListMateriaForm, ExpedienteForm, JustificativaAusenciaForm, OcorrenciaSessaoForm, ListMateriaForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet, MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet, PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
@ -4190,6 +4190,8 @@ class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin,
qr = self.request.GET.copy() qr = self.request.GET.copy()
form = AdicionarVariasMateriasForm
context['form'] = form
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['pk_sessao'] = self.kwargs['pk'] context['pk_sessao'] = self.kwargs['pk']

22
sapl/templates/sessao/adicionar_varias_materias_expediente.html

@ -38,6 +38,16 @@
{% elif paginator.count == 1 %} {% elif paginator.count == 1 %}
<h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3> <h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3>
{% endif %} {% endif %}
<tr>
<td>
{{ form.check_all }} {{ form.check_all.label }}
</td>
<td>
{% for tipo in form.tipo_votacao %}
{{ tipo }}<br />
{% endfor %}
</td>
</tr>
{% for m in page_obj %} {% for m in page_obj %}
<tr> <tr>
<td> <td>
@ -126,5 +136,17 @@
$(window).on('beforeunload', function() { $(window).on('beforeunload', function() {
$("input[type=submit], input[type=button]").prop("disabled", "disabled") $("input[type=submit], input[type=button]").prop("disabled", "disabled")
}); });
function checkAll(elem) {
$('input[name="materia_id"]:checkbox').prop('checked', elem.checked);
}
function marcaTipoVotacao() {
$('input[name="materia_id"]:checked').each(function() {
var tipoVotacao = $('input[name="tipo_votacao"]:checked').val();
var idMateria = "#tipo_votacao_" + $(this).val() + "_" + tipoVotacao;
$(idMateria).prop('checked', true);
});
}
</script> </script>
{% endblock extra_js %} {% endblock extra_js %}

Loading…
Cancel
Save