From 97c1c7f76e8fb76008ba7320a06e7c46989c947f Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Thu, 7 Jun 2018 14:37:07 -0300 Subject: [PATCH] fix #1976 (#1977) * fix #1976 * Fix #1975 --- sapl/materia/forms.py | 21 +++++++++- sapl/templates/materia/layouts.yaml | 2 +- .../materia/materialegislativa_form.html | 38 +++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index e5ff928d7..bbfdd3536 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -162,6 +162,11 @@ class MateriaSimplificadaForm(ModelForm): class MateriaLegislativaForm(ModelForm): + tipo_autor = ModelChoiceField(label=_('Tipo Autor'), + required=False, + queryset=TipoAutor.objects.all(), + empty_label=_('------'), ) + autor = forms.ModelChoiceField(required=False, empty_label='------', queryset=Autor.objects.all() @@ -172,6 +177,15 @@ class MateriaLegislativaForm(ModelForm): exclude = ['texto_articulado', 'autores', 'proposicao', 'anexadas', 'data_ultima_atualizacao'] + def __init__(self, *args, **kwargs): + super(MateriaLegislativaForm, self).__init__(*args, **kwargs) + + if self.instance and self.instance.pk: + self.fields['tipo_autor'] = forms.CharField(required=False, + widget=forms.TextInput(attrs={'disabled': 'disabled'})) + self.fields['autor'] = forms.CharField(required=False, + widget=forms.TextInput(attrs={'disabled': 'disabled'})) + def clean(self): super(MateriaLegislativaForm, self).clean() @@ -219,12 +233,17 @@ class MateriaLegislativaForm(ModelForm): return cleaned_data def save(self, commit=False): + if not self.instance.pk: + primeiro_autor = True + else: + primeiro_autor = False + materia = super(MateriaLegislativaForm, self).save(commit) materia.save() if self.cleaned_data['autor']: autoria = Autoria() - autoria.primeiro_autor = True + autoria.primeiro_autor = primeiro_autor autoria.materia = materia autoria.autor = self.cleaned_data['autor'] autoria.save() diff --git a/sapl/templates/materia/layouts.yaml b/sapl/templates/materia/layouts.yaml index 74c11e6c8..d31817b94 100644 --- a/sapl/templates/materia/layouts.yaml +++ b/sapl/templates/materia/layouts.yaml @@ -23,7 +23,7 @@ MateriaLegislativa: {% trans 'Identificação Básica' %}: - tipo ano numero - data_apresentacao numero_protocolo tipo_apresentacao - - autor + - tipo_autor autor - texto_original {% trans 'Outras Informações' %}: - apelido dias_prazo polemica diff --git a/sapl/templates/materia/materialegislativa_form.html b/sapl/templates/materia/materialegislativa_form.html index 335350406..bb435be91 100644 --- a/sapl/templates/materia/materialegislativa_form.html +++ b/sapl/templates/materia/materialegislativa_form.html @@ -22,6 +22,44 @@ } } $("#id_tipo, #id_ano").change(recuperar_numero_ano); + + function compare(a, b) { + if (a.text < b.text) + return -1; + if (a.text > b.text) + return 1; + return 0; + } + + $(document).ready(function() { + $("#id_tipo_autor").change(function() { + 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_apresentacao").val() + } + $.getJSON("/api/autor/possiveis", json_data, function(data){ + if (data) { + var results = data.sort(compare); + if (results.length > 1) { + $("#id_autor").append(""); + } + $.each(results, function(idx, obj) { + $("#id_autor") + .append($("") + .attr("value", obj.value) + .text(obj.text)); + }); + $("#id_autor").val(autor_selecionado); + } + }); + } + }); + $("#id_tipo_autor").trigger('change'); + }); {% endblock %}