diff --git a/sapl/base/migrations/0024_auto_20181126_1534.py b/sapl/base/migrations/0024_auto_20181126_1534.py new file mode 100644 index 000000000..2f91af1ea --- /dev/null +++ b/sapl/base/migrations/0024_auto_20181126_1534.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-11-26 17:34 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0023_auto_20181105_1804'), + ] + + operations = [ + migrations.AlterField( + model_name='appconfig', + name='cronometro_aparte', + field=models.DurationField(blank=True, null=True, verbose_name='Cronômetro do Aparte'), + ), + migrations.AlterField( + model_name='appconfig', + name='cronometro_consideracoes', + field=models.DurationField(blank=True, null=True, verbose_name='Cronômetro de Considerações Finais'), + ), + migrations.AlterField( + model_name='appconfig', + name='cronometro_discurso', + field=models.DurationField(blank=True, null=True, verbose_name='Cronômetro do Discurso'), + ), + migrations.AlterField( + model_name='appconfig', + name='cronometro_ordem', + field=models.DurationField(blank=True, null=True, verbose_name='Cronômetro da Ordem'), + ), + ] diff --git a/sapl/base/migrations/0025_auto_20181126_1648.py b/sapl/base/migrations/0025_auto_20181126_1648.py new file mode 100644 index 000000000..a1ca53ed4 --- /dev/null +++ b/sapl/base/migrations/0025_auto_20181126_1648.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-11-26 18:48 +from __future__ import unicode_literals + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0024_auto_20181126_1534'), + ] + + operations = [ + migrations.AlterField( + model_name='appconfig', + name='cronometro_discurso', + field=models.DurationField(blank=True, default=datetime.timedelta(0, 2400), null=True, verbose_name='Cronômetro do Discurso'), + ), + ] diff --git a/sapl/base/migrations/0026_auto_20181126_1727.py b/sapl/base/migrations/0026_auto_20181126_1727.py new file mode 100644 index 000000000..4b908e7c4 --- /dev/null +++ b/sapl/base/migrations/0026_auto_20181126_1727.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-11-26 19:27 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0025_auto_20181126_1648'), + ] + + operations = [ + migrations.AlterField( + model_name='appconfig', + name='cronometro_discurso', + field=models.DurationField(blank=True, null=True, verbose_name='Cronômetro do Discurso'), + ), + ] diff --git a/sapl/base/models.py b/sapl/base/models.py index 9153803b8..5caf8b2c0 100644 --- a/sapl/base/models.py +++ b/sapl/base/models.py @@ -121,22 +121,22 @@ class AppConfig(models.Model): verbose_name=_('Quem deve assina a ata'), max_length=1, choices=ASSINATURA_ATA_CHOICES, default='T') - cronometro_discurso = models.TimeField( + cronometro_discurso = models.DurationField( verbose_name=_('Cronômetro do Discurso'), blank=True, null=True) - cronometro_aparte = models.TimeField( + cronometro_aparte = models.DurationField( verbose_name=_('Cronômetro do Aparte'), blank=True, null=True) - cronometro_ordem = models.TimeField( + cronometro_ordem = models.DurationField( verbose_name=_('Cronômetro da Ordem'), blank=True, null=True) - cronometro_consideracoes = models.TimeField( + cronometro_consideracoes = models.DurationField( verbose_name=_('Cronômetro de Considerações Finais'), blank=True, null=True) diff --git a/sapl/base/templatetags/common_tags.py b/sapl/base/templatetags/common_tags.py index 4251e54da..89f781558 100644 --- a/sapl/base/templatetags/common_tags.py +++ b/sapl/base/templatetags/common_tags.py @@ -228,11 +228,8 @@ def file_extension(value): def cronometro_to_seconds(value): if not AppConfig.attr('cronometro_' + value): return 0 - - m, s, x = AppConfig.attr( - 'cronometro_' + value).isoformat().split(':') - - return 60 * int(m) + int(s) + + return AppConfig.attr('cronometro_' + value).seconds @register.filter diff --git a/sapl/norma/fixtures/pre_popula_tipo_vinculo_norma.json b/sapl/norma/fixtures/pre_popula_tipo_vinculo_norma.json index 50c6ad647..afae65bfe 100644 --- a/sapl/norma/fixtures/pre_popula_tipo_vinculo_norma.json +++ b/sapl/norma/fixtures/pre_popula_tipo_vinculo_norma.json @@ -1,6 +1,7 @@ [ { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Altera o(a)", "descricao_passiva": "Alterado(a) pelo(a)", "sigla": "A" @@ -10,6 +11,7 @@ }, { "fields": { + "revoga_integralmente": "True", "descricao_ativa": "Revoga integralmente o(a)", "descricao_passiva": "Revogado(a) integralmente pelo(a)", "sigla": "R" @@ -19,6 +21,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Revoga parcialmente o(a)", "descricao_passiva": "Revogado(a) parcialmente pelo(a)", "sigla": "P" @@ -28,6 +31,7 @@ }, { "fields": { + "revoga_integralmente": "True", "descricao_ativa": "Revoga integralmente por consolida\u00e7\u00e3o", "descricao_passiva": "Revogado(a) integralmente por consolida\u00e7\u00e3o", "sigla": "T" @@ -37,6 +41,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Norma correlata", "descricao_passiva": "Norma correlata", "sigla": "C" @@ -46,6 +51,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Ressalva o(a)", "descricao_passiva": "Ressalvada pelo(a)", "sigla": "S" @@ -55,6 +61,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Reedita o(a)", "descricao_passiva": "Reeditada pelo(a)", "sigla": "E" @@ -64,6 +71,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Reedita com altera\u00e7\u00e3o o(a)", "descricao_passiva": "Reeditada com altera\u00e7\u00e3o pelo(a)", "sigla": "I" @@ -73,6 +81,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Regulamenta o(a)", "descricao_passiva": "Regulamentada pelo(a)", "sigla": "G" @@ -82,6 +91,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Suspende parcialmente o(a)", "descricao_passiva": "Suspenso(a) parcialmente pelo(a)", "sigla": "K" @@ -91,6 +101,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Suspende integralmente o(a)", "descricao_passiva": "Suspenso(a) integralmente pelo(a)", "sigla": "L" @@ -100,6 +111,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Julga integralmente inconstitucional", "descricao_passiva": "Julgada integralmente inconstitucional", "sigla": "N" @@ -109,6 +121,7 @@ }, { "fields": { + "revoga_integralmente": "False", "descricao_ativa": "Julga parcialmente inconstitucional", "descricao_passiva": "Julgada parcialmente inconstitucional", "sigla": "O" @@ -116,4 +129,4 @@ "model": "norma.TipoVinculoNormaJuridica", "pk": "13" } -] \ No newline at end of file +] diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index 674e1b9a8..4f6b6a563 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -344,6 +344,8 @@ class NormaRelacionadaForm(ModelForm): def save(self, commit=False): relacionada = super(NormaRelacionadaForm, self).save(commit) relacionada.norma_relacionada = self.cleaned_data['norma_relacionada'] + relacionada.norma_relacionada.data_vigencia = relacionada.norma_principal.data + relacionada.norma_relacionada.save() relacionada.save() return relacionada diff --git a/sapl/norma/migrations/0008_normajuridica_popula_tipo_vinculo_norma.py b/sapl/norma/migrations/0008_normajuridica_popula_tipo_vinculo_norma.py index 3bfb90132..460122073 100644 --- a/sapl/norma/migrations/0008_normajuridica_popula_tipo_vinculo_norma.py +++ b/sapl/norma/migrations/0008_normajuridica_popula_tipo_vinculo_norma.py @@ -31,9 +31,9 @@ def gera_tipo_vinculo(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ('norma', '0007_auto_20170904_1708'), + ('norma', '0017_auto_20181127_0955'), ] operations = [ migrations.RunPython(gera_tipo_vinculo), - ] \ No newline at end of file + ] diff --git a/sapl/norma/migrations/0009_auto_20171113_1339.py b/sapl/norma/migrations/0009_auto_20171113_1339.py index 672d87c94..36380b2a9 100644 --- a/sapl/norma/migrations/0009_auto_20171113_1339.py +++ b/sapl/norma/migrations/0009_auto_20171113_1339.py @@ -9,7 +9,7 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ('norma', '0008_normajuridica_popula_tipo_vinculo_norma'), + ('norma', '0007_auto_20170904_1708'), ] operations = [ diff --git a/sapl/norma/migrations/0016_tipovinculonormajuridica_revoga_integramente.py b/sapl/norma/migrations/0016_tipovinculonormajuridica_revoga_integramente.py new file mode 100644 index 000000000..5a57c2d9f --- /dev/null +++ b/sapl/norma/migrations/0016_tipovinculonormajuridica_revoga_integramente.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-11-23 14:51 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('norma', '0015_auto_20181109_1422'), + ] + + operations = [ + migrations.AddField( + model_name='tipovinculonormajuridica', + name='revoga_integramente', + field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Revoga Integralmente?'), + ), + ] diff --git a/sapl/norma/migrations/0017_auto_20181127_0955.py b/sapl/norma/migrations/0017_auto_20181127_0955.py new file mode 100644 index 000000000..45fdb463b --- /dev/null +++ b/sapl/norma/migrations/0017_auto_20181127_0955.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2018-11-27 11:55 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('norma', '0016_tipovinculonormajuridica_revoga_integramente'), + ] + + operations = [ + migrations.RenameField( + model_name='tipovinculonormajuridica', + old_name='revoga_integramente', + new_name='revoga_integralmente', + ), + ] diff --git a/sapl/norma/models.py b/sapl/norma/models.py index fd06b553e..6565304ee 100644 --- a/sapl/norma/models.py +++ b/sapl/norma/models.py @@ -258,6 +258,9 @@ class TipoVinculoNormaJuridica(models.Model): max_length=50, blank=True, verbose_name=_('Descrição Ativa')) descricao_passiva = models.CharField( max_length=50, blank=True, verbose_name=_('Descrição Passiva')) + revoga_integralmente = models.BooleanField(verbose_name=_('Revoga Integralmente?'), + choices=YES_NO_CHOICES, + default=False) class Meta: verbose_name = _('Tipo de Vínculo entre Normas Jurídicas') diff --git a/sapl/norma/views.py b/sapl/norma/views.py index faca58d32..779cfcd11 100644 --- a/sapl/norma/views.py +++ b/sapl/norma/views.py @@ -37,7 +37,7 @@ TipoNormaCrud = CrudAux.build( list_field_names=['sigla', 'descricao', 'equivalente_lexml']) TipoVinculoNormaJuridicaCrud = CrudAux.build( TipoVinculoNormaJuridica, '', - list_field_names=['sigla', 'descricao_ativa', 'descricao_passiva']) + list_field_names=['sigla', 'descricao_ativa', 'descricao_passiva', 'revoga_integralmente']) class NormaRelacionadaCrud(MasterDetailCrud): @@ -208,7 +208,7 @@ class NormaCrud(Crud): def get_initial(self): username = self.request.user.username - + try: self.logger.debug('user=' + username + '. Tentando obter objeto de modelo da esfera da federação.') esfera = sapl.base.models.AppConfig.objects.last( diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 963e53019..333c3771e 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -340,7 +340,6 @@ def cronometro_painel(request): def get_cronometro_status(request, name): logger = logging.getLogger(__name__) username = request.user.username - try: logger.debug("user=" + username + ". Tentando obter cronometro.") cronometro = request.session[name] diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 9e6fc1d17..f9a37b373 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -498,7 +498,7 @@ class ParlamentarCrud(Crud): if legislatura_id >= 0: return queryset.filter( mandato__legislatura_id=legislatura_id).annotate( - mandato_titular=F('mandato__titular')) + mandato_titular=F('mandato__titular')).distinct() else: try: self.logger.debug("user=" + username + ". Tentando obter o mais recente registro do objeto Legislatura.") diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py index 2ac9a7fe7..b67a51696 100644 --- a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py +++ b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py @@ -142,7 +142,7 @@ def mesa(lst_mesa): return tmp -def presenca(lst_presenca_sessao): +def presenca(lst_presenca_sessao,lst_ausencia_sessao): """ """ @@ -155,6 +155,19 @@ def presenca(lst_presenca_sessao): tmp += '\t\t' + \ str(presenca['nom_parlamentar']) + '/' + \ str(presenca['sgl_partido']) + '\n' + + tmp += '\t\tJustificativas de Ausência da Sessão\n' + tmp += '\t\t\n' + tmp += '\t\t\t
\n' + tmp += '\t\t
\n' + tmp += '\n' + tmp += 'ParlamentarJustificativaAusente em\n' + for ausencia in lst_ausencia_sessao: + tmp += '' + \ + str(ausencia['parlamentar']) + ' ' + \ + str(ausencia['justificativa']) + '' + \ + str(ausencia['tipo']) + '\n' + tmp += '' return tmp @@ -329,7 +342,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao 'cont_mult': '', 'exp': expedientes(lst_expedientes), 'id_basica': inf_basicas(inf_basicas_dic), - 'lista_p': presenca(lst_presenca_sessao), + 'lista_p': presenca(lst_presenca_sessao,lst_ausencia_sessao), 'lista_p_o_d': presenca_ordem_dia(lst_presenca_ordem_dia), 'mat_exp': expediente_materia(lst_expediente_materia), 'mat_o_d': votacao(lst_votacao), @@ -355,7 +368,7 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao else: tmp += inf_basicas(inf_basicas_dic) tmp += mesa(lst_mesa) - tmp += presenca(lst_presenca_sessao) + tmp += presenca(lst_presenca_sessao,lst_ausencia_sessao) tmp += expedientes(lst_expedientes) tmp += expediente_materia(lst_expediente_materia) tmp += oradores_expediente(lst_oradores_expediente) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 0b991beff..a8daa645a 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -16,7 +16,8 @@ from sapl.parlamentares.models import CargoMesa, Filiacao, Parlamentar from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo, TramitacaoAdministrativo) from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, - IntegranteMesa, Orador, OradorExpediente, + IntegranteMesa, JustificativaAusencia, + Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, OcorrenciaSessao) from sapl.settings import STATIC_ROOT @@ -538,6 +539,20 @@ def get_sessao_plenaria(sessao, casa): dic_presenca['sgl_partido'] = partido_sigla lst_presenca_sessao.append(dic_presenca) + # Lista de ausencias na sessão + lst_ausencia_sessao = [] + ausencia = JustificativaAusencia.objects.filter( + sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') + for ausente in ausencia: + dic_ausencia = {} + dic_ausencia['parlamentar'] = ausente.parlamentar + dic_ausencia['justificativa'] = ausente.tipo_ausencia + if ausente.ausencia == 1: + dic_ausencia['tipo'] = 'Matéria' + else: + dic_ausencia['tipo'] = 'Sessão' + + lst_ausencia_sessao.append(dic_ausencia) # Exibe os Expedientes lst_expedientes = [] @@ -751,6 +766,7 @@ def get_sessao_plenaria(sessao, casa): return (inf_basicas_dic, lst_mesa, lst_presenca_sessao, + lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, @@ -803,6 +819,7 @@ def relatorio_sessao_plenaria(request, pk): (inf_basicas_dic, lst_mesa, lst_presenca_sessao, + lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, @@ -824,6 +841,7 @@ def relatorio_sessao_plenaria(request, pk): inf_basicas_dic, lst_mesa, lst_presenca_sessao, + lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 9d737915f..2f93b7056 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -846,18 +846,11 @@ class PainelView(PermissionRequiredForAppCrudMixin, TemplateView): messages.add_message(self.request, messages.ERROR, msg) else: - m, s, x = cronometro_discurso.isoformat().split(':') - cronometro_discurso = int(m) * 60 + int(s) - - m, s, x = cronometro_aparte.isoformat().split(':') - cronometro_aparte = int(m) * 60 + int(s) - - m, s, x = cronometro_ordem.isoformat().split(':') - cronometro_ordem = int(m) * 60 + int(s) - - m, s, x = cronometro_consideracoes.isoformat().split(':') - cronometro_consideracoes = int(m) * 60 + int(s) - + cronometro_discurso = cronometro_discurso.seconds + cronometro_aparte = cronometro_aparte.seconds + cronometro_ordem = cronometro_ordem.seconds + cronometro_consideracoes = cronometro_consideracoes.seconds + context = TemplateView.get_context_data(self, **kwargs) context.update({ 'head_title': str(_('Painel Plenário')), @@ -1349,7 +1342,12 @@ class ResumoView(DetailView): parlamentares_sessao = [p.parlamentar for p in presencas] - context.update({'presenca_sessao': parlamentares_sessao}) + ausentes_sessao = JustificativaAusencia.objects.filter( + sessao_plenaria_id=self.object.id + ).order_by('parlamentar__nome_parlamentar') + + context.update({'presenca_sessao': parlamentares_sessao, + 'justificativa_ausencia': ausentes_sessao}) # ===================================================================== @@ -1383,10 +1381,13 @@ class ResumoView(DetailView): turno = get_turno(tramitacao.turno) rv = m.registrovotacao_set.first() + rp = m.retiradapauta_set.filter(materia=m.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao - + elif rp: + resultado = rp.tipo_de_retirada.descricao + resultado_observacao = rp.observacao else: resultado = _('Matéria não votada') resultado_observacao = _(' ') @@ -1474,9 +1475,13 @@ class ResumoView(DetailView): # Verificar resultado rv = o.registrovotacao_set.filter(materia=o.materia).first() + rp = o.retiradapauta_set.filter(materia=o.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao + elif rp: + resultado = rp.tipo_de_retirada.descricao + resultado_observacao = rp.observacao else: resultado = _('Matéria não votada') resultado_observacao = _(' ') diff --git a/sapl/static/js/app.js b/sapl/static/js/app.js index cc9c773ce..4341cb784 100644 --- a/sapl/static/js/app.js +++ b/sapl/static/js/app.js @@ -47,7 +47,7 @@ function refreshMask() { $('.dateinput').mask('00/00/0000', {placeholder:"__/__/____"}); $('.hora').mask("00:00", {placeholder:"hh:mm"}); $('.hora_hms').mask("00:00:00", {placeholder:"hh:mm:ss"}); - $('.cronometro').mask("00:00", {placeholder:"mm:ss"}); + $('.cronometro').mask("00:00:00", {placeholder:"hh:mm:ss"}); } function autorModal() { diff --git a/sapl/templates/norma/layouts.yaml b/sapl/templates/norma/layouts.yaml index 295ef62d5..90be4172e 100644 --- a/sapl/templates/norma/layouts.yaml +++ b/sapl/templates/norma/layouts.yaml @@ -58,7 +58,7 @@ LegislacaoCitadaDetail: TipoVinculoNormaJuridica: {% trans 'Tipo de Vínculo entre Normas Jurídicas' %}: - - sigla:2 descricao_ativa descricao_passiva + - sigla:2 descricao_ativa descricao_passiva revoga_integralmente NormaRelacionada: {% trans 'Norma Relacionada' %}: @@ -73,4 +73,4 @@ NormaRelacionadaDetail: AutoriaNorma: {% trans 'Autoria' %}: - - autor primeiro_autor \ No newline at end of file + - autor primeiro_autor diff --git a/sapl/templates/sessao/blocos_ata/lista_presenca.html b/sapl/templates/sessao/blocos_ata/lista_presenca.html index c6456f2c4..621a4783c 100644 --- a/sapl/templates/sessao/blocos_ata/lista_presenca.html +++ b/sapl/templates/sessao/blocos_ata/lista_presenca.html @@ -2,9 +2,15 @@

- Lista de Presença na Sessão: + Lista de Presença na Sessão: {% for p in presenca_sessao %} - {{p.nome_parlamentar}} / {{ p|filiacao_data_filter:object.data_inicio }} ; + {{p.nome_parlamentar}} / {{ p|filiacao_data_filter:object.data_inicio }} ; {% endfor %}

-
\ No newline at end of file +

+ Justificativas de Ausências na Sessão: + {% for j in justificativa_ausencia %} + {{j.parlamentar}} / {{ j.tipo_ausencia }} ; + {% endfor %} +

+ diff --git a/sapl/templates/sessao/blocos_resumo/lista_presenca.html b/sapl/templates/sessao/blocos_resumo/lista_presenca.html index 56ecf9c17..8f5ac10e2 100644 --- a/sapl/templates/sessao/blocos_resumo/lista_presenca.html +++ b/sapl/templates/sessao/blocos_resumo/lista_presenca.html @@ -7,4 +7,29 @@
{{p.nome_parlamentar}} / {{ p|filiacao_data_filter:object.data_inicio }}
{% endfor %} - \ No newline at end of file +


+
+ Justificativas de Ausência na Sessão + + + + + + + + + + {% for j in justificativa_ausencia %} + + + + {% if j.ausencia == 1 %} + + {% else %} + + {% endif %} + {% endfor %} + +
ParlamentarJustificativaAusente em
{{ j.parlamentar }} {{ j.tipo_ausencia }} Matéria Sessão
+
+ diff --git a/sapl/templates/sessao/resumo_ata.html b/sapl/templates/sessao/resumo_ata.html index 528dda494..dd3b811f7 100644 --- a/sapl/templates/sessao/resumo_ata.html +++ b/sapl/templates/sessao/resumo_ata.html @@ -19,6 +19,6 @@ {% include 'sessao/blocos_ata/'|add:oitavo_ordenacao %} {% include 'sessao/blocos_ata/'|add:nono_ordenacao %} {% include 'sessao/blocos_ata/'|add:decimo_ordenacao %} - {% include 'sessao/blocos_ata/'|add:decimo_primeiro_ordenacao %} + {% include 'sessao/blocos_ata/'|add:decimo_primeiro_ordenacao %} {% include 'sessao/blocos_ata/assinaturas.html' %} {% endblock detail_content %}