diff --git a/sapl/api/deprecated.py b/sapl/api/deprecated.py index 1b5fb84e5..6ef840771 100644 --- a/sapl/api/deprecated.py +++ b/sapl/api/deprecated.py @@ -210,7 +210,16 @@ class AutoresPossiveisFilterSet(FilterSet): if legislatura_relativa.atual(): q = q & Q(parlamentar_set__ativo=True) - return queryset.filter(q) + legislatura_anterior = self.request.GET.get('legislatura_anterior', 'False') + if legislatura_anterior.lower() == 'true': + legislaturas = Legislatura.objects.filter( + data_fim__lte=data_relativa).order_by('-data_fim')[:2] + if len(legislaturas) == 2: + _, leg_anterior = legislaturas + q = q | Q(parlamentar_set__mandato__data_inicio_mandato__gte=leg_anterior.data_inicio) + + qs = queryset.filter(q) + return qs def filter_comissao(self, queryset, data_relativa): return queryset.filter( diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index 6162aef26..812c7750b 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -1,6 +1,6 @@ import logging -from crispy_forms.layout import Fieldset, Layout +from crispy_forms.layout import Fieldset, Layout, HTML from django import forms from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db import models @@ -265,11 +265,17 @@ class AutoriaNormaForm(ModelForm): row1 = to_row([('tipo_autor', 4), ('autor', 4), ('primeiro_autor', 4)]) + row2 = to_row([(HTML('Incluir parlamentares ' + 'da Legislatura anterior (vĂ¡lido somente para ' + 'autores do tipo parlamentar)'), 12)]) self.helper = SaplFormHelper() self.helper.layout = Layout( Fieldset(_('Autoria'), - row1, 'data_relativa', form_actions(label='Salvar'))) + row1, 'data_relativa', + form_actions(label='Salvar'), + row2)) if not kwargs['instance']: self.fields['autor'].choices = [] diff --git a/sapl/templates/norma/autorianorma_form.html b/sapl/templates/norma/autorianorma_form.html index 35338c9de..20bbdce2a 100644 --- a/sapl/templates/norma/autorianorma_form.html +++ b/sapl/templates/norma/autorianorma_form.html @@ -15,14 +15,16 @@ } $(document).ready(function() { - $("#id_tipo_autor").change(function() { + + function atualiza_select_autor() { var tipo_selecionado = $("#id_tipo_autor").val(); var autor_selecionado = $("#id_autor").val(); $("#id_autor option").remove() if (tipo_selecionado !== undefined && tipo_selecionado !== null) { var json_data = { tipo : tipo_selecionado, - data_relativa : $("#id_data_relativa").val() + data_relativa : $("#id_data_relativa").val(), + legislatura_anterior: $('#id_legislatura_anterior').is(':checked') } $.getJSON("/api/autor/possiveis", json_data, function(data){ if (data) { @@ -39,7 +41,15 @@ $("#id_autor").val(autor_selecionado); } }); - } + } + }; + + $("#id_legislatura_anterior").change(function() { + atualiza_select_autor(); + }); + + $("#id_tipo_autor").change(function() { + atualiza_select_autor(); }); $("#id_tipo_autor").trigger('change'); });