diff --git a/sapl/compilacao/forms.py b/sapl/compilacao/forms.py index c728bf230..f51504f2c 100644 --- a/sapl/compilacao/forms.py +++ b/sapl/compilacao/forms.py @@ -860,6 +860,21 @@ class DispositivoEdicaoVigenciaForm(ModelForm): ('fim_vigencia', 3), ('inicio_eficacia', 3), ('fim_eficacia', 3), ]) + + inst = kwargs['instance'] + while inst.auto_inserido and inst.dispositivo_pai: + inst = inst.dispositivo_pai + + if (inst.dispositivos_vigencias_set.exists()): + row_datas.fields.append( + Alert( + css_class='alert-info col-md-12', + content='%s %s' % ( + _('Atenção!'), + _('O Dispositivo em edição define vigência de outros ' + 'dispositivos. Alterar as datas de vigência ' + 'alterará as datas de vigência dos dispositivos ' + 'vigêntes por este em edição.')))) layout.append( Fieldset(_('Datas de Controle de Vigência'), row_datas, @@ -910,17 +925,26 @@ class DispositivoEdicaoVigenciaForm(ModelForm): super(DispositivoEdicaoVigenciaForm, self).save() data = self.cleaned_data + instance = self.instance + inst = instance - extensao = 'extensao' in data and data['extensao'] == 'True' + while instance.auto_inserido and instance.dispositivo_pai: + dp = instance.dispositivo_pai + dp.inicio_vigencia = instance.inicio_vigencia + dp.inicio_eficacia = instance.inicio_eficacia + dp.fim_vigencia = instance.fim_vigencia + dp.fim_eficacia = instance.fim_vigencia + dp.save() - if extensao: - dv = data['dispositivo_vigencia'] + instance = dp - if dv and dv.auto_inserido: - dv = dv.dispositivo_pai + dv = data['dispositivo_vigencia'] + if dv and dv.auto_inserido: + dv = dv.dispositivo_pai + extensao = 'extensao' in data and data['extensao'] == 'True' + if extensao: dv_pk = dv.pk if dv else None - instance = self.instance def extenderPara(dpt_pk): @@ -937,6 +961,26 @@ class DispositivoEdicaoVigenciaForm(ModelForm): extenderPara(instance.pk) + inst = instance + while instance.auto_inserido and instance.dispositivo_pai: + instance = instance.dispositivo_pai + + inst.dispositivos_vigencias_set.filter( + ta_publicado__isnull=True).update( + inicio_vigencia=inst.inicio_vigencia, + inicio_eficacia=inst.inicio_eficacia, + fim_vigencia=inst.fim_vigencia, + fim_eficacia=inst.fim_eficacia) + + inst.dispositivos_vigencias_set.filter( + ta_publicado__isnull=False).update( + inicio_vigencia=inst.inicio_eficacia, + inicio_eficacia=inst.inicio_eficacia, + fim_vigencia=inst.fim_eficacia, + fim_eficacia=inst.fim_eficacia) + + return inst + class MultipleChoiceWithoutValidationField(forms.MultipleChoiceField): diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index 61d720628..cc12354b9 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -286,6 +286,204 @@ class CompMixin(PermissionRequiredMixin): context['NO_ENTRIES_MSG'] = CrudListView.no_entries_msg return context + def get_notificacoes(self, object_list=None, type_notificacoes=None): + + p = [] + + def padd(r, type_notificacao, reverse_url=None, test=True, msg='', + kwargs=None, to_position=None): + + if not test: + return + + r.contextual_class = type_notificacao + if not kwargs: + kwargs = {'ta_id': r.ta_id, 'pk': r.pk} + if reverse_url: + p.append((type_notificacao, msg, + reverse_lazy(reverse_url, kwargs=kwargs), + to_position)) + else: + p.append((type_notificacao, msg, None, to_position)) + + def success(r): + type_notificacao = 'success' + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.inconstitucionalidade, + _('Declarado Inconstitucional.')) + + padd(r, type_notificacao, 'sapl.compilacao:ta_text_edit', + r.ta_publicado and r.dispositivo_atualizador, + _('Dispositivo alterado em %s' % r.ta_publicado), + {'ta_id': r.ta_publicado_id}, r.dispositivo_atualizador_id) + + def info(r): + type_notificacao = 'info' + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.publicacao and + r.dispositivo_vigencia and + r.publicacao.data != r.dispositivo_vigencia.inicio_vigencia, + _('Data da publicação associada ao Dispositivo difere da data' + ' de inicio de vigência do Dispositivo de vigência.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.publicacao and r.publicacao.data != r.inicio_vigencia, + _('Data da publicação associada ao Dispositivo difere ' + 'da data de inicio de vigência.')) + + padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit', + r.rotulo != r.rotulo_padrao(local_insert=1), + _('Rótulo Diferente do Padrão')) + + padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit', + r.texto_atualizador and r.texto_atualizador != r.texto, + _('Texto do Dispositivo para o Documento ' + 'está diferente do texto para o Documento Alterador.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + r.texto_atualizador and r.texto_atualizador == r.texto, + _('Texto do Dispositivo no Documento Alterador ' + 'está igual ao Texto no Documento Original. ' + 'Não é necessário manter armazenado o texto no Documento ' + 'Alterador.')) + + def warning(r): + type_notificacao = 'warning' + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.dispositivo_vigencia and r.inicio_vigencia != + r.dispositivo_vigencia.inicio_vigencia, + _('Data de início de Vigência difere da data início de ' + 'Vigência do Dispositivo de Vigência')) + + padd(r, type_notificacao, 'sapl.compilacao:ta_text', + r.inconstitucionalidade and not r.notas.exists(), + _('Dispositivo está definido como inconstitucional. É ' + 'aconcelhavel inserir uma Nota informando esta condição.'), + kwargs={'ta_id': r.ta_id}, + to_position=r.pk) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.inconstitucionalidade and not ( + r.inicio_vigencia == r.fim_vigencia and + r.fim_vigencia == r.inicio_eficacia and + r.inicio_eficacia == r.fim_eficacia), + _('Dispositivo está definido como inconstitucional porém ' + 'existe diferença entre as datas início e fim de ' + 'vigência e eficácia.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.publicacao and + r.ta_publicado and r.ta_publicado != r.publicacao.ta, + _('A Publicação associada a este Dispositivo não é ' + 'uma publicação do Texto Articulado Alterador.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + not r.publicacao, + _('Dispositivo sem registro de publicação.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.texto and r.tipo_dispositivo.dispositivo_de_articulacao, + _('Dispositivos de Articulação não ' + 'deveriam armazenar texto.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + not r.texto and + not r.tipo_dispositivo.dispositivo_de_articulacao, + _('Dispositivo está sem texto.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + r.texto_atualizador and not r.ta_publicado, + _('Existe Texto Atualizador, porém este Dispositivo não ' + 'está associado a nenhum Documento Atualizador.')) + + def danger(r): + type_notificacao = 'danger' + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + not r.dispositivo_vigencia, + _('Dispositivo sem definição de Dispositivo de Vigência.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_vigencia', + r.inconstitucionalidade and + r.inicio_vigencia != r.fim_vigencia, + _('Dispositivo está definido como inconstitucional porém ' + 'existe período de vigência.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + r.ta_publicado and not r.dispositivo_atualizador, + _('Dispositivo está associado a um Texto Articulado ' + 'Atualizador mas, a nenhum Dispositivo Atualizador.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + not r.dispositivo_atualizador and + r.dispositivo_substituido, + _('Dispositivo está substituindo outro mas não foi informado ' + 'o Dispositivo Atualizador.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + r.dispositivo_substituido and + r.dispositivo_substituido.tipo_dispositivo != + r.tipo_dispositivo, + _('Dispositivo está substituindo um Dispositivo ' + 'de outro tipo.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + r.dispositivo_substituido and + r.dispositivo_substituido.ta != r.ta, + _('Dispositivo está substituindo um Dispositivo de outro ' + 'Texto Articulado.')) + + padd(r, type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + r.dispositivo_substituido and + r.dispositivo_substituido.dispositivo_subsequente != r, + _('Dispositivo está substituindo um Dispositivo que não ' + 'possui este como seu Dispositivo Subsequente.')) + + padd(r, + type_notificacao, + 'sapl.compilacao:dispositivo_edit_alteracao', + r.dispositivo_subsequente and + r.dispositivo_subsequente.dispositivo_substituido != r, + _('Dispositivo foi substituído por outro que não ' + 'possui este como seu Dispositivo Substituído.')) + + rr = [] + for r in object_list: + p = [] + r.contextual_class = "" + + for f in type_notificacoes: + if f != 'default': + locals()[f](r) + + r.notificacoes = p + + if p or 'default' in type_notificacoes: + rr.append(r) + + if r.dispositivos_alterados_set.exists(): + rr += self.get_notificacoes( + r.dispositivos_alterados_set.all(), type_notificacoes) + + return rr + class TipoTaListView(CompMixin, ListView): model = TipoTextoArticulado @@ -963,6 +1161,23 @@ class TextEditView(CompMixin, TemplateView): else: if 'lock' in request.GET: # TODO - implementar logging de ação de usuário + + notificacoes = self.get_notificacoes( + object_list=self.object.dispositivos_set.all(), + type_notificacoes=['danger', ]) + + if notificacoes: + messages.error( + request, + _('Existem erros a serem corrigidos que impedem a ' + 'publicação deste Texto Articulado. ' + 'Corrija os erros apontados nas notificações.')) + self.request.session[ + 'type_notificacoes'] = ['danger', ] + return redirect(to=reverse_lazy( + 'sapl.compilacao:ta_text_notificacoes', kwargs={ + 'ta_id': self.object.id})) + self.object.editing_locked = True self.object.privacidade = STATUS_TA_PUBLIC self.object.save() @@ -1563,9 +1778,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin): ordem__gt=base_ordem, nivel__lte=base.nivel).first() - if not pbi: - base.delete() - else: + if pbi: dcc_a_excluir = Dispositivo.objects.order_by( 'ordem').filter( ta_id=base.ta_id, @@ -1604,10 +1817,16 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin): dr.dispositivo0 - primeiro_a_religar + d.dispositivo0) dr.rotulo = dr.rotulo_padrao() - dr.save(clean=base != dr) - if base.pk: - base.delete() + + if base.tipo_dispositivo.dispositivo_de_alteracao: + dpts = base.dispositivos_alterados_set.all().order_by( + '-ordem_bloco_atualizador') + for dpt in dpts: + self.remover_dispositivo(dpt, False) + + if base.pk: + base.delete() return '' @@ -1951,19 +2170,6 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): else: raise Exception('Não existe perfil padrão!') - if not base.dispositivo_vigencia and tipo.dispositivo_de_alteracao: - data = {'pk': base.pk, - 'pai': [base.dispositivo_pai.pk, ]} - self.set_message( - data, 'danger', - _('Registros de Compilação só podem ser realizados ' - 'após a conclusão do lançamento deste ' - 'Texto Articulado.\nConclua o Lançamento, defina ' - 'o dispositivo de vigência e as datas de vigência e ' - 'eficácia. Só depois retorne ' - 'realizando Registros de Compilação.'), modal=True) - return data - dp_irmao = None dp_pai = None for dp in parents: @@ -2369,27 +2575,6 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, data.update({'pk': bloco_alteracao.pk, 'pai': [bloco_alteracao.pk, ]}) - if not bloco_alteracao.dispositivo_vigencia: - """ - Essa restrição não é necessária pois os lançamentos podem ser - aleatórios, desde que no fim do lançamento, datas de vigência - e eficácia, bem como o dispositivo de vigência da norma seja - configurado. Como nos primeiros testes com usuários ficou - demonstrado o esquecimento/desconhecimento dessa tarefa, - principalmente em documentos que possuem datas de vigência e/ou - eficácia diferentes da data de publicação, apesar de já aparecer - na rotina de notificações, achei por bem colocar essa restrição. - """ - self.set_message( - data, 'danger', - _('Registros de Compilação só podem ser realizados ' - 'após a conclusão do lançamento deste ' - 'Texto Articulado.\r\nConclua o Lançamento, defina ' - 'o dispositivo de vigência e as datas de vigência e ' - 'eficácia. Só depois retorne ' - 'realizando Registros de Compilação.'), modal=True) - return data - history = dispositivo_a_alterar.history() for d in history: @@ -2434,8 +2619,13 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, ndp.dispositivo_de_revogacao = True ndp.dispositivo_vigencia = bloco_alteracao.dispositivo_vigencia - ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia - ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_eficacia + + if ndp.dispositivo_vigencia: + ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia + ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_eficacia + else: + ndp.inicio_eficacia = bloco_alteracao.inicio_eficacia + ndp.inicio_vigencia = bloco_alteracao.inicio_eficacia try: ordem = dispositivo_a_alterar.criar_espaco( @@ -3117,199 +3307,11 @@ class TextNotificacoesView(CompMixin, ListView, FormView): ta_id=self.kwargs['ta_id'] ).select_related(*DISPOSITIVO_SELECT_RELATED) - p = [] - - def padd(r, type_notificacao, reverse_url=None, test=True, msg='', - kwargs=None, to_position=None): - - if not test: - return - - r.contextual_class = type_notificacao - if not kwargs: - kwargs = {'ta_id': r.ta_id, 'pk': r.pk} - if reverse_url: - p.append((type_notificacao, msg, - reverse_lazy(reverse_url, kwargs=kwargs), - to_position)) - else: - p.append((type_notificacao, msg, None, to_position)) - - def success(r): - type_notificacao = 'success' - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.inconstitucionalidade, - _('Declarado Inconstitucional.')) + type_notificacoes = [] + if 'type_notificacoes' in self.request.session: + type_notificacoes = self.request.session['type_notificacoes'] - padd(r, type_notificacao, 'sapl.compilacao:ta_text_edit', - r.ta_publicado and r.dispositivo_atualizador, - _('Dispositivo alterado em %s' % r.ta_publicado), - {'ta_id': r.ta_publicado_id}, r.dispositivo_atualizador_id) - - def info(r): - type_notificacao = 'info' - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.publicacao and - r.dispositivo_vigencia and - r.publicacao.data != r.dispositivo_vigencia.inicio_vigencia, - _('Data da publicação associada ao Dispositivo difere da data' - ' de inicio de vigência do Dispositivo de vigência.')) + if type_notificacoes and not isinstance(type_notificacoes, list): + type_notificacoes = [type_notificacoes, ] - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.publicacao and r.publicacao.data != r.inicio_vigencia, - _('Data da publicação associada ao Dispositivo difere ' - 'da data de inicio de vigência.')) - - padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit', - r.rotulo != r.rotulo_padrao(local_insert=1), - _('Rótulo Diferente do Padrão')) - - padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit', - r.texto_atualizador and r.texto_atualizador != r.texto, - _('Texto do Dispositivo para o Documento ' - 'está diferente do texto para o Documento Alterador.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - r.texto_atualizador and r.texto_atualizador == r.texto, - _('Texto do Dispositivo no Documento Alterador ' - 'está igual ao Texto no Documento Original. ' - 'Não é necessário manter armazenado o texto no Documento ' - 'Alterador.')) - - def warning(r): - type_notificacao = 'warning' - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.dispositivo_vigencia and r.inicio_vigencia != - r.dispositivo_vigencia.inicio_vigencia, - _('Data de início de Vigência difere da data início de ' - 'Vigência do Dispositivo de Vigência')) - - padd(r, type_notificacao, 'sapl.compilacao:ta_text', - r.inconstitucionalidade and not r.notas.exists(), - _('Dispositivo está definido como inconstitucional. É ' - 'aconcelhavel inserir uma Nota informando esta condição.'), - kwargs={'ta_id': r.ta_id}, - to_position=r.pk) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.inconstitucionalidade and not ( - r.inicio_vigencia == r.fim_vigencia and - r.fim_vigencia == r.inicio_eficacia and - r.inicio_eficacia == r.fim_eficacia), - _('Dispositivo está definido como inconstitucional porém ' - 'existe diferença entre as datas início e fim de ' - 'vigência e eficácia.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.publicacao and - r.ta_publicado and r.ta_publicado != r.publicacao.ta, - _('A Publicação associada a este Dispositivo não é ' - 'uma publicação do Texto Articulado Alterador.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - not r.publicacao, - _('Dispositivo sem registro de publicação.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.texto and r.tipo_dispositivo.dispositivo_de_articulacao, - _('Dispositivos de Articulação não ' - 'deveriam armazenar texto.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - not r.texto and - not r.tipo_dispositivo.dispositivo_de_articulacao, - _('Dispositivo está sem texto.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - r.texto_atualizador and not r.ta_publicado, - _('Existe Texto Atualizador, porém este Dispositivo não ' - 'está associado a nenhum Documento Atualizador.')) - - def danger(r): - type_notificacao = 'danger' - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - not r.dispositivo_vigencia, - _('Dispositivo sem definição de Dispositivo de Vigência.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_vigencia', - r.inconstitucionalidade and - r.inicio_vigencia != r.fim_vigencia, - _('Dispositivo está definido como inconstitucional porém ' - 'existe período de vigência.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - r.ta_publicado and not r.dispositivo_atualizador, - _('Dispositivo está associado a um Texto Articulado ' - 'Atualizador mas, a nenhum Dispositivo Atualizador.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - not r.dispositivo_atualizador and - r.dispositivo_substituido, - _('Dispositivo está substituindo outro mas não foi informado ' - 'o Dispositivo Atualizador.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - r.dispositivo_substituido and - r.dispositivo_substituido.tipo_dispositivo != - r.tipo_dispositivo, - _('Dispositivo está substituindo um Dispositivo ' - 'de outro tipo.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - r.dispositivo_substituido and - r.dispositivo_substituido.ta != r.ta, - _('Dispositivo está substituindo um Dispositivo de outro ' - 'Texto Articulado.')) - - padd(r, type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - r.dispositivo_substituido and - r.dispositivo_substituido.dispositivo_subsequente != r, - _('Dispositivo está substituindo um Dispositivo que não ' - 'possui este como seu Dispositivo Subsequente.')) - - padd(r, - type_notificacao, - 'sapl.compilacao:dispositivo_edit_alteracao', - r.dispositivo_subsequente and - r.dispositivo_subsequente.dispositivo_substituido != r, - _('Dispositivo foi substituído por outro que não ' - 'possui este como seu Dispositivo Substituído.')) - - rr = [] - for r in result: - p = [] - r.contextual_class = "" - - type_notificacoes = [] - if 'type_notificacoes' in self.request.session: - type_notificacoes = self.request.session['type_notificacoes'] - - if isinstance(type_notificacoes, list): - for f in type_notificacoes: - if f != 'default': - locals()[f](r) - - r.notificacoes = p - - if p or 'default' in type_notificacoes: - rr.append(r) - - return rr + return self.get_notificacoes(result, type_notificacoes) diff --git a/sapl/static/styles/compilacao.scss b/sapl/static/styles/compilacao.scss index 647b72a43..651ec7869 100644 --- a/sapl/static/styles/compilacao.scss +++ b/sapl/static/styles/compilacao.scss @@ -165,7 +165,7 @@ a:link:after, a:visited:after { .cp { .desativado { - + .dtxt, .dtxt *, .dpt-link, .dpt-link * { text-decoration: line-through; color: #999 !important; @@ -1306,9 +1306,6 @@ a:link:after, a:visited:after { border-radius: 4px 4px 0 0; width: 100%; - span { - padding: 0.5em; - } } &:last-child .itemlabel { border-radius: 0 0 4px 0px; @@ -1338,16 +1335,11 @@ a:link:after, a:visited:after { padding: 0.5em; vertical-align: middle; width: 100%; - label { - line-height: 1; - font-family: "SourceSansPro", Helvetica, Arial, sans-serif; - display: block; - margin: 0px; - } .artigo { float: none; } } + } } .nomenclatura_heranca { @@ -1361,6 +1353,14 @@ a:link:after, a:visited:after { border: 0px; } } +.label_vigencia { + border-top: 1px solid white; + display: inline-block; + color: #555; + span { + color: gray; + } +} .cp-nav-parents { & > .dropdown-menu { left: 0; diff --git a/sapl/templates/compilacao/layout/dispositivo_checkbox.html b/sapl/templates/compilacao/layout/dispositivo_checkbox.html index e495e4b10..6f29a171a 100644 --- a/sapl/templates/compilacao/layout/dispositivo_checkbox.html +++ b/sapl/templates/compilacao/layout/dispositivo_checkbox.html @@ -3,18 +3,18 @@
{% include 'bootstrap/layout/field_errors_block.html' %} - {% for choice in field.field.choices %} - {% ifchanged choice.1.ta%} {% if not forloop.first %}{% endif %}
+
+ {% if choice.1.inicio_vigencia %}{% trans "Início de Vigência:" %} {{choice.1.inicio_vigencia|default:''}}.{% endif %} + {% if choice.1.fim_vigencia %}{% trans "Fim de Vigência:" %} {{choice.1.fim_vigencia|default:''}}.{% endif %}
+ {% if choice.1.inicio_eficacia %}{% trans "Início de Eficácia:" %} {{choice.1.inicio_eficacia|default:''}}.{% endif %} + {% if choice.1.fim_eficacia %}{% trans "Fim de Eficácia:" %} {{choice.1.fim_eficacia|default:''}}.{% endif %} +
diff --git a/sapl/templates/compilacao/text_edit.html b/sapl/templates/compilacao/text_edit.html index e8aed58fc..953f00a84 100644 --- a/sapl/templates/compilacao/text_edit.html +++ b/sapl/templates/compilacao/text_edit.html @@ -20,7 +20,7 @@