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 %}