diff --git a/docker-compose.yml b/docker-compose.yml
index 68ab20687..f3ca2cef8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -11,7 +11,7 @@ sapldb:
ports:
- "5432:5432"
sapl:
- image: interlegis/sapl:3.1.81
+ image: interlegis/sapl:3.1.87
restart: always
environment:
ADMIN_PASSWORD: interlegis
diff --git a/gunicorn_start.sh b/gunicorn_start.sh
index 6b5c98676..6247a0b27 100755
--- a/gunicorn_start.sh
+++ b/gunicorn_start.sh
@@ -16,8 +16,9 @@ DJANGODIR=/var/interlegis/sapl/ # Django project directory (*
SOCKFILE=/var/interlegis/sapl/run/gunicorn.sock # we will communicate using this unix socket (*)
USER=`whoami` # the user to run as (*)
GROUP=`whoami` # the group to run as (*)
-NUM_WORKERS=9 # how many worker processes should Gunicorn spawn (*)
+NUM_WORKERS=4 # how many worker processes should Gunicorn spawn (*)
# NUM_WORKERS = 2 * CPUS + 1
+MAX_REQUESTS=100 # number of requests before restarting worker
DJANGO_SETTINGS_MODULE=sapl.settings # which settings file should Django use (*)
DJANGO_WSGI_MODULE=sapl.wsgi # WSGI module name (*)
@@ -41,6 +42,7 @@ test -d $RUNDIR || mkdir -p $RUNDIR
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
+ --max-requests $MAX_REQUESTS \
--user $USER \
--access-logfile - \
--error-logfile - \
diff --git a/sapl/audiencia/views.py b/sapl/audiencia/views.py
index c0e353139..2c16b0919 100644
--- a/sapl/audiencia/views.py
+++ b/sapl/audiencia/views.py
@@ -1,15 +1,10 @@
-from django.shortcuts import render
from django.http import HttpResponse
-from django.core.urlresolvers import reverse
-from django.db.models import F
from django.views.decorators.clickjacking import xframe_options_exempt
-from django.views.generic import ListView
-from sapl.comissoes.forms import ParticipacaoCreateForm, ParticipacaoEditForm
-from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud
-from sapl.materia.models import MateriaLegislativa
+from django.views.generic import UpdateView
+from sapl.crud.base import RP_DETAIL, RP_LIST, Crud
from .forms import AudienciaForm
-from .models import (AudienciaPublica, TipoAudienciaPublica)
+from .models import AudienciaPublica
def index(request):
return HttpResponse("Audiência Pública")
@@ -36,10 +31,11 @@ class AudienciaCrud(Crud):
form_class = AudienciaForm
def get_initial(self):
- self.initial['tipo_materia'] = self.object.materia.tipo.id
- self.initial['numero_materia'] = self.object.materia.numero
- self.initial['ano_materia'] = self.object.materia.ano
- return self.initial
+ initial = super(UpdateView, self).get_initial()
+ initial['tipo_materia'] = self.object.materia.tipo.id
+ initial['numero_materia'] = self.object.materia.numero
+ initial['ano_materia'] = self.object.materia.ano
+ return initial
class DeleteView(Crud.DeleteView):
pass
diff --git a/sapl/base/forms.py b/sapl/base/forms.py
index 5410ee3fe..e60ffe072 100644
--- a/sapl/base/forms.py
+++ b/sapl/base/forms.py
@@ -528,7 +528,8 @@ class RelatorioAtasFilterSet(django_filters.FilterSet):
@property
def qs(self):
parent = super(RelatorioAtasFilterSet, self).qs
- return parent.distinct().prefetch_related('tipo').order_by('-ano', 'tipo', 'numero')
+ return parent.distinct().prefetch_related('tipo').exclude(
+ upload_ata='').order_by('-data_inicio', 'tipo', 'numero')
def __init__(self, *args, **kwargs):
super(RelatorioAtasFilterSet, self).__init__(
@@ -729,6 +730,11 @@ class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet):
autoria__autor = django_filters.CharFilter(widget=forms.HiddenInput())
+ @property
+ def qs(self):
+ parent = super(RelatorioMateriasPorAutorFilterSet, self).qs
+ return parent.distinct().order_by('-ano', '-numero')
+
class Meta:
model = MateriaLegislativa
fields = ['tipo', 'data_apresentacao']
diff --git a/sapl/base/views.py b/sapl/base/views.py
index f0e7d2e1b..238252245 100644
--- a/sapl/base/views.py
+++ b/sapl/base/views.py
@@ -247,7 +247,6 @@ class RelatorioAtasView(FilterView):
if not self.filterset.form.is_valid():
return context
- context['object_list'] = context['object_list'].exclude(upload_ata='')
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py
index e5ff928d7..d14fad28c 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.HiddenInput())
+ self.fields['autor'] = forms.CharField(required=False,
+ widget=forms.HiddenInput())
+
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/materia/views.py b/sapl/materia/views.py
index 74f2bd6b6..807db3d9c 100644
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -17,7 +17,7 @@ from django.shortcuts import get_object_or_404, redirect
from django.template import RequestContext, loader
from django.utils import formats, timezone
from django.utils.translation import ugettext_lazy as _
-from django.views.generic import CreateView, ListView, TemplateView, UpdateView
+from django.views.generic import FormView, ListView, TemplateView, CreateView, UpdateView
from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView
from django_filters.views import FilterView
@@ -1013,18 +1013,19 @@ class TramitacaoCrud(MasterDetailCrud):
'pk': self.kwargs['pk']})
def get_initial(self):
+ initial = super(CreateView, self).get_initial()
local = MateriaLegislativa.objects.get(
pk=self.kwargs['pk']).tramitacao_set.order_by(
'-data_tramitacao',
'-id').first()
if local:
- self.initial['unidade_tramitacao_local'
+ initial['unidade_tramitacao_local'
] = local.unidade_tramitacao_destino.pk
else:
- self.initial['unidade_tramitacao_local'] = ''
- self.initial['data_tramitacao'] = timezone.now().date()
- return self.initial
+ initial['unidade_tramitacao_local'] = ''
+ initial['data_tramitacao'] = timezone.now().date()
+ return initial
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@@ -1154,9 +1155,10 @@ class DocumentoAcessorioCrud(MasterDetailCrud):
super(MasterDetailCrud.CreateView, self).__init__(**kwargs)
def get_initial(self):
- self.initial['data'] = timezone.now().date()
+ initial = super(CreateView, self).get_initial()
+ initial['data'] = timezone.now().date()
- return self.initial
+ return initial
def get_context_data(self, **kwargs):
context = super(
@@ -1283,10 +1285,11 @@ class LegislacaoCitadaCrud(MasterDetailCrud):
form_class = LegislacaoCitadaForm
def get_initial(self):
- self.initial['tipo'] = self.object.norma.tipo.id
- self.initial['numero'] = self.object.norma.numero
- self.initial['ano'] = self.object.norma.ano
- return self.initial
+ initial = super(UpdateView, self).get_initial()
+ initial['tipo'] = self.object.norma.tipo.id
+ initial['numero'] = self.object.norma.numero
+ initial['ano'] = self.object.norma.ano
+ return initial
class DetailView(MasterDetailCrud.DetailView):
@@ -1319,10 +1322,11 @@ class AnexadaCrud(MasterDetailCrud):
form_class = AnexadaForm
def get_initial(self):
- self.initial['tipo'] = self.object.materia_anexada.tipo.id
- self.initial['numero'] = self.object.materia_anexada.numero
- self.initial['ano'] = self.object.materia_anexada.ano
- return self.initial
+ initial = super(UpdateView, self).get_initial()
+ initial['tipo'] = self.object.materia_anexada.tipo.id
+ initial['numero'] = self.object.materia_anexada.numero
+ initial['ano'] = self.object.materia_anexada.ano
+ return initial
class DetailView(MasterDetailCrud.DetailView):
@@ -1344,16 +1348,18 @@ class MateriaAssuntoCrud(MasterDetailCrud):
form_class = MateriaAssuntoForm
def get_initial(self):
- self.initial['materia'] = self.kwargs['pk']
- return self.initial
+ initial = super(CreateView, self).get_initial()
+ initial['materia'] = self.kwargs['pk']
+ return initial
class UpdateView(MasterDetailCrud.UpdateView):
form_class = MateriaAssuntoForm
def get_initial(self):
- self.initial['materia'] = self.get_object().materia
- self.initial['assunto'] = self.get_object().assunto
- return self.initial
+ initial = super(UpdateView, self).get_initial()
+ initial['materia'] = self.get_object().materia
+ initial['assunto'] = self.get_object().assunto
+ return initial
class MateriaLegislativaCrud(Crud):
diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py
index affe07b87..5e0eb99ff 100644
--- a/sapl/norma/forms.py
+++ b/sapl/norma/forms.py
@@ -83,16 +83,19 @@ class NormaJuridicaForm(ModelForm):
label='Matéria',
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione'
+ empty_label='Selecione',
+ widget=forms.Select(attrs={'autocomplete': 'off'})
)
numero_materia = forms.CharField(
label='Número Matéria',
- required=False
+ required=False,
+ widget=forms.TextInput(attrs={'autocomplete': 'off'})
)
ano_materia = forms.ChoiceField(
label='Ano Matéria',
required=False,
choices=ANO_CHOICES,
+ widget=forms.Select(attrs={'autocomplete': 'off'})
)
class Meta:
@@ -122,7 +125,13 @@ class NormaJuridicaForm(ModelForm):
if not self.is_valid():
return cleaned_data
-
+ if not self.instance:
+ norma = NormaJuridica.objects.filter(ano=cleaned_data['ano'],
+ numero=cleaned_data['numero'],
+ tipo=cleaned_data['tipo']).exists()
+ if norma:
+ raise ValidationError("Já existe uma norma de mesmo Tipo, Ano "
+ "e Número no sistema")
if (cleaned_data['tipo_materia'] and
cleaned_data['numero_materia'] and
cleaned_data['ano_materia']):
diff --git a/sapl/norma/views.py b/sapl/norma/views.py
index fd5396353..650442676 100644
--- a/sapl/norma/views.py
+++ b/sapl/norma/views.py
@@ -7,7 +7,7 @@ from django.http import HttpResponse, JsonResponse
from django.template import RequestContext, loader
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
-from django.views.generic import CreateView, ListView, TemplateView, UpdateView
+from django.views.generic import TemplateView, UpdateView
from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView
from django_filters.views import FilterView
@@ -51,11 +51,12 @@ class NormaRelacionadaCrud(MasterDetailCrud):
form_class = NormaRelacionadaForm
def get_initial(self):
- self.initial['tipo'] = self.object.norma_relacionada.tipo.id
- self.initial['numero'] = self.object.norma_relacionada.numero
- self.initial['ano'] = self.object.norma_relacionada.ano
- self.initial['ementa'] = self.object.norma_relacionada.ementa
- return self.initial
+ initial = super(UpdateView, self).get_initial()
+ initial['tipo'] = self.object.norma_relacionada.tipo.id
+ initial['numero'] = self.object.norma_relacionada.numero
+ initial['ano'] = self.object.norma_relacionada.ano
+ initial['ementa'] = self.object.norma_relacionada.ementa
+ return initial
class DetailView(MasterDetailCrud.DetailView):
@@ -171,12 +172,13 @@ class NormaCrud(Crud):
layout_key = 'NormaJuridicaCreate'
def get_initial(self):
+ initial = super(UpdateView, self).get_initial()
norma = NormaJuridica.objects.get(id=self.kwargs['pk'])
if norma.materia:
- self.initial['tipo_materia'] = norma.materia.tipo
- self.initial['ano_materia'] = norma.materia.ano
- self.initial['numero_materia'] = norma.materia.numero
- return self.initial.copy()
+ initial['tipo_materia'] = norma.materia.tipo
+ initial['ano_materia'] = norma.materia.ano
+ initial['numero_materia'] = norma.materia.numero
+ return initial
def recuperar_norma(request):
diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py
index a7e042037..36ce94c3a 100644
--- a/sapl/parlamentares/forms.py
+++ b/sapl/parlamentares/forms.py
@@ -261,6 +261,8 @@ class FiliacaoForm(ModelForm):
fields = ['partido',
'data',
'data_desfiliacao']
+ widgets = {'data': forms.DateInput(attrs={'autocomplete': 'off'}),
+ 'data_desfiliacao': forms.DateInput(attrs={'autocomplete': 'off'})}
def clean(self):
super(FiliacaoForm, self).clean()
diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py
index 7dd7206c7..c1a2b185a 100644
--- a/sapl/protocoloadm/views.py
+++ b/sapl/protocoloadm/views.py
@@ -11,7 +11,7 @@ from django.http.response import HttpResponseRedirect
from django.shortcuts import redirect
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
-from django.views.generic import CreateView, ListView
+from django.views.generic import ListView, CreateView
from django.views.generic.base import RedirectView, TemplateView
from django.views.generic.edit import FormView
from django_filters.views import FilterView
@@ -610,18 +610,19 @@ class TramitacaoAdmCrud(MasterDetailCrud):
form_class = TramitacaoAdmForm
def get_initial(self):
+ initial = super(CreateView, self).get_initial()
local = DocumentoAdministrativo.objects.get(
pk=self.kwargs['pk']).tramitacaoadministrativo_set.order_by(
'-data_tramitacao',
'-id').first()
if local:
- self.initial['unidade_tramitacao_local'
+ initial['unidade_tramitacao_local'
] = local.unidade_tramitacao_destino.pk
else:
- self.initial['unidade_tramitacao_local'] = ''
- self.initial['data_tramitacao'] = timezone.now().date()
- return self.initial
+ initial['unidade_tramitacao_local'] = ''
+ initial['data_tramitacao'] = timezone.now().date()
+ return initial
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py
index cd46fab84..06dd40830 100644
--- a/sapl/sessao/forms.py
+++ b/sapl/sessao/forms.py
@@ -179,15 +179,17 @@ class ExpedienteMateriaForm(ModelForm):
required=True,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
- )
+ widget=forms.Select(attrs={'autocomplete': 'off'}))
numero_materia = forms.CharField(
- label='Número Matéria', required=True)
+ label='Número Matéria', required=True,
+ widget=forms.TextInput(attrs={'autocomplete': 'off'}))
ano_materia = forms.CharField(
label='Ano Matéria',
initial=int(data_atual.year),
- required=True)
+ required=True,
+ widget=forms.TextInput(attrs={'autocomplete': 'off'}))
data_ordem = forms.CharField(
label='Data Sessão',
@@ -463,7 +465,6 @@ class OradorExpedienteForm(ModelForm):
def __init__(self, *args, **kwargs):
super(OradorExpedienteForm, self).__init__(*args, **kwargs)
-
legislatura_vigente = SessaoPlenaria.objects.get(pk=kwargs['initial']['id_sessao']).legislatura
if legislatura_vigente:
@@ -480,11 +481,13 @@ class OradorExpedienteForm(ModelForm):
return self.cleaned_data
sessao_id = self.initial['id_sessao']
+ numero = self.initial.get('numero') # Retorna None se inexistente
ordem = OradorExpediente.objects.filter(
sessao_plenaria_id=sessao_id,
numero_ordem=cleaned_data['numero_ordem']
).exists()
- if ordem:
+
+ if ordem and (cleaned_data['numero_ordem'] != numero):
raise ValidationError(_(
'Já existe orador nesta posição da ordem de pronunciamento'))
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
index 8700177c0..8b695f10d 100644
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -16,7 +16,7 @@ from django.utils.decorators import method_decorator
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import FormView, ListView, TemplateView
+from django.views.generic import FormView, ListView, TemplateView, CreateView, UpdateView
from django.views.generic.base import RedirectView
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormMixin
@@ -329,6 +329,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
resultado_descricao,
resultado_observacao))
else:
+
if obj.tipo_votacao == 2:
if is_expediente:
url = reverse(
@@ -351,12 +352,8 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
(url,
resultado_descricao,
resultado_observacao))
- else:
- resultado = ('%s
%s' %
- (resultado_descricao,
- resultado_observacao))
- if obj.tipo_votacao == 1:
+ elif obj.tipo_votacao == 1:
if is_expediente:
url = reverse(
'sapl.sessao:votacao_simbolica_transparencia',
@@ -375,9 +372,9 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'?&materia=ordem'
resultado = ('%s
%s' %
- (url,
- resultado_descricao,
- resultado_observacao))
+ (url,
+ resultado_descricao,
+ resultado_observacao))
else:
resultado = ('%s
%s' %
(resultado_descricao,
@@ -385,7 +382,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
context['rows'][i][3] = (resultado, None)
return context
-
+
def get_presencas_generic(model, sessao, legislatura):
presencas = model.objects.filter(
sessao_plenaria=sessao)
@@ -435,10 +432,11 @@ class MateriaOrdemDiaCrud(MasterDetailCrud):
form_class = OrdemDiaForm
def get_initial(self):
- self.initial['tipo_materia'] = self.object.materia.tipo.id
- self.initial['numero_materia'] = self.object.materia.numero
- self.initial['ano_materia'] = self.object.materia.ano
- return self.initial
+ initial = super(UpdateView, self).get_initial()
+ initial['tipo_materia'] = self.object.materia.tipo.id
+ initial['numero_materia'] = self.object.materia.numero
+ initial['ano_materia'] = self.object.materia.ano
+ return initial
class DetailView(MasterDetailCrud.DetailView):
@@ -492,14 +490,15 @@ class ExpedienteMateriaCrud(MasterDetailCrud):
form_class = ExpedienteMateriaForm
def get_initial(self):
- self.initial['data_ordem'] = SessaoPlenaria.objects.get(
+ initial = super(CreateView, self).get_initial()
+ initial['data_ordem'] = SessaoPlenaria.objects.get(
pk=self.kwargs['pk']).data_inicio.strftime('%d/%m/%Y')
max_numero_ordem = ExpedienteMateria.objects.filter(
sessao_plenaria=self.kwargs['pk']).aggregate(
Max('numero_ordem'))['numero_ordem__max']
- self.initial['numero_ordem'] = (
+ initial['numero_ordem'] = (
max_numero_ordem if max_numero_ordem else 0) + 1
- return self.initial
+ return initial
def get_success_url(self):
return reverse('sapl.sessao:expedientemateria_list',
@@ -509,10 +508,11 @@ class ExpedienteMateriaCrud(MasterDetailCrud):
form_class = ExpedienteMateriaForm
def get_initial(self):
- self.initial['tipo_materia'] = self.object.materia.tipo.id
- self.initial['numero_materia'] = self.object.materia.numero
- self.initial['ano_materia'] = self.object.materia.ano
- return self.initial
+ initial = super(UpdateView, self).get_initial()
+ initial['tipo_materia'] = self.object.materia.tipo.id
+ initial['numero_materia'] = self.object.materia.numero
+ initial['ano_materia'] = self.object.materia.ano
+ return initial
class DetailView(MasterDetailCrud.DetailView):
@@ -544,6 +544,14 @@ class OradorExpedienteCrud(OradorCrud):
kwargs={'pk': self.kwargs['pk']})
+ class UpdateView(MasterDetailCrud.UpdateView):
+ form_class = OradorExpedienteForm
+
+ def get_initial(self):
+ return {'id_sessao': self.object.sessao_plenaria.id,
+ 'numero': self.object.numero_ordem}
+
+
class OradorCrud(OradorCrud):
model = Orador
@@ -1146,9 +1154,10 @@ class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
return reverse('sapl.base:sistema')
def get_initial(self):
+ initial = super(ResumoOrdenacaoView, self).get_initial()
ordenacao = ResumoOrdenacao.objects.first()
if ordenacao:
- return {'primeiro': ordenacao.primeiro,
+ initial.update({'primeiro': ordenacao.primeiro,
'segundo': ordenacao.segundo,
'terceiro': ordenacao.terceiro,
'quarto': ordenacao.quarto,
@@ -1157,8 +1166,8 @@ class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
'setimo': ordenacao.setimo,
'oitavo': ordenacao.oitavo,
'nono': ordenacao.nono,
- 'decimo': ordenacao.decimo}
- return self.initial.copy()
+ 'decimo': ordenacao.decimo})
+ return initial
def form_valid(self, form):
ordenacao = ResumoOrdenacao.objects.get_or_create()[0]
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 %}
diff --git a/sapl/templates/painel/index.html b/sapl/templates/painel/index.html
index 621689ffe..3ba84b141 100644
--- a/sapl/templates/painel/index.html
+++ b/sapl/templates/painel/index.html
@@ -57,7 +57,7 @@