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 @@
- +

@@ -290,9 +290,15 @@ $('#oradores_list').append( '
A listagem de oradores só aparecerá quando o painel estiver aberto.
') oradores.append(''); + + votacao.append(''); + $("#votacao").append('
A votação só aparecerá quando o painel estiver aberto
'); + votacao.append('
'); + + } - if (data['materia_legislativa_texto']){ + if (data['materia_legislativa_texto'] && data["status_painel"] == true){ var votacao = $("#votacao") @@ -366,16 +372,21 @@ } if (data['materia_legislativa_texto']){ - $("#materia_legislativa_texto").text(data["materia_legislativa_texto"]); + if (data["status_painel"] == true){ + $("#materia_legislativa_texto").text(data["materia_legislativa_texto"]); + } + else{ + $("#materia_legislativa_texto").text('A Matéria em votação só aparecerá quando o painel estiver aberto'); + } } else{ $("#materia_legislativa_texto").text('Não há nehuma matéria votada ou para votação'); } - if (data['observacao_materia']){ + if (data['observacao_materia'] && data["status_painel"] == true){ var texto = data['observacao_materia']; if(texto.length > 151) { - $("#observacao_materia").text(texto.substr(0, 145).concat('(...)')); + $("#observacao_materia").text(texto.substr(0, 145).concat('(...)')); } else{ $("#observacao_materia").text(texto); diff --git a/sapl/templates/protocoloadm/comprovante.html b/sapl/templates/protocoloadm/comprovante.html index 031b096c4..1de22d402 100644 --- a/sapl/templates/protocoloadm/comprovante.html +++ b/sapl/templates/protocoloadm/comprovante.html @@ -61,14 +61,14 @@ Data / Horário {{ protocolo.data|date:"d/m/Y" }} - {{ protocolo.timestamp|date:"H:i:s" }} - {% if protocolo.tipo_processo == 0 %} + {% if protocolo.tipo_processo == 1 %} Ementa {{ protocolo.assunto_ementa }} - Interessado - {{ protocolo.interessado }} + Autor + {{ protocolo.autor }} {% endif %} @@ -85,5 +85,9 @@ Número Páginas {{ protocolo.numero_paginas }} + + Comprovante emitido por + {{ request.user.username }} + {% endblock detail_content %} diff --git a/setup.py b/setup.py index 9e5c5315d..e25cde8b6 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ install_requires = [ ] setup( name='interlegis-sapl', - version='3.1.81', + version='3.1.87', packages=find_packages(), include_package_data=True, license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007',