Browse Source

Muda lógica de reg de alt de disp de ins autom.

pull/590/head
LeandroRoberto 8 years ago
parent
commit
3e7ecfa4d9
  1. 3
      .gitignore
  2. 45
      sapl/compilacao/forms.py
  3. 20
      sapl/compilacao/migrations/0051_dispositivo_auto_inserido.py
  4. 8
      sapl/compilacao/models.py
  5. 5
      sapl/compilacao/templatetags/compilacao_filters.py
  6. 151
      sapl/compilacao/views.py
  7. 6
      sapl/static/js/compilacao_view.js
  8. 19
      sapl/static/styles/compilacao.scss
  9. 2
      sapl/templates/compilacao/dispositivo_form_search_fragment.html
  10. 4
      sapl/templates/compilacao/text_edit_bloco.html
  11. 14
      sapl/templates/compilacao/text_list_bloco.html
  12. 16
      sapl/templates/compilacao/text_list_blocoalteracao.html

3
.gitignore

@ -82,6 +82,9 @@ target/
.vagrant .vagrant
*.sublime-project *.sublime-project
*.sublime-workspace *.sublime-workspace
.ipynb_checkpoints/
*.ipynb
# specific to this project # specific to this project
collected_static collected_static

45
sapl/compilacao/forms.py

@ -636,27 +636,26 @@ class DispositivoEdicaoBasicaForm(ModelForm):
btns_excluir = [] btns_excluir = []
if not inst.is_relative_auto_insert(): btns_excluir = [
btns_excluir = [ HTML('<a class="btn btn-danger btn-action btn-excluir" '
HTML('<a class="btn btn-danger btn-action btn-excluir" ' 'action="json_delete_item_dispositivo" '
'action="json_delete_item_dispositivo" ' 'title="%s" '
'title="%s" ' 'pk="%s" '
'pk="%s" ' '>%s</a>' % (_('Excluir apenas este dispositivo.'),
'>%s</a>' % (_('Excluir apenas este dispositivo.'), inst.pk,
inst.pk, _('Excluir Dispositivo')))]
_('Excluir Dispositivo')))]
if inst.dispositivos_filhos_set.exists():
if inst.dispositivos_filhos_set.exists(): btns_excluir.append(
btns_excluir.append( HTML(
HTML( '<a class="btn btn-danger btn-action btn-excluir" '
'<a class="btn btn-danger btn-action btn-excluir" ' 'action="json_delete_bloco_dispositivo" '
'action="json_delete_bloco_dispositivo" ' 'title="%s" '
'title="%s" ' 'pk="%s" '
'pk="%s" ' '>%s</a>' % (_('Excluir este dispositivo '
'>%s</a>' % (_('Excluir este dispositivo ' 'e toda sua estrutura.'),
'e toda sua estrutura.'), inst.pk,
inst.pk, _('Excluir Bloco de Dispositivo.'))))
_('Excluir Bloco de Dispositivo.'))))
if btns_excluir: if btns_excluir:
css_class = 'btn-group pull-right btns-excluir' css_class = 'btn-group pull-right btns-excluir'
@ -856,7 +855,7 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
def clean_dispositivo_vigencia(self): def clean_dispositivo_vigencia(self):
dv = self.cleaned_data['dispositivo_vigencia'] dv = self.cleaned_data['dispositivo_vigencia']
if dv and dv.is_relative_auto_insert(): if dv and dv.auto_inserido:
dv = dv.dispositivo_pai dv = dv.dispositivo_pai
return dv return dv
@ -871,7 +870,7 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
if extensao: if extensao:
dv = data['dispositivo_vigencia'] dv = data['dispositivo_vigencia']
if dv and dv.is_relative_auto_insert(): if dv and dv.auto_inserido:
dv = dv.dispositivo_pai dv = dv.dispositivo_pai
dv_pk = dv.pk if dv else None dv_pk = dv.pk if dv else None

20
sapl/compilacao/migrations/0051_dispositivo_auto_inserido.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-09-12 16:24
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('compilacao', '0050_auto_20160503_0926'),
]
operations = [
migrations.AddField(
model_name='dispositivo',
name='auto_inserido',
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Auto Inserido'),
),
]

8
sapl/compilacao/models.py

@ -578,7 +578,10 @@ class Dispositivo(BaseModel, TimestampedMixin):
default=False, default=False,
choices=YES_NO_CHOICES, choices=YES_NO_CHOICES,
verbose_name=_('Declarado Inconstitucional')) verbose_name=_('Declarado Inconstitucional'))
# Relevant attribute only in altering norms auto_inserido = models.BooleanField(
default=False,
choices=YES_NO_CHOICES,
verbose_name=_('Auto Inserido'))
visibilidade = models.BooleanField( visibilidade = models.BooleanField(
default=False, default=False,
choices=YES_NO_CHOICES, choices=YES_NO_CHOICES,
@ -1120,7 +1123,8 @@ class Dispositivo(BaseModel, TimestampedMixin):
ta_id=self.ta_id) ta_id=self.ta_id)
return niveis_zero return niveis_zero
def is_relative_auto_insert(self, perfil_pk=None): # metodo obsoleto, foi acrescentado o campo auto_inserido no modelo
def is_relative_auto_insert__obsoleto(self, perfil_pk=None):
if self.dispositivo_pai is not None: if self.dispositivo_pai is not None:
# pp possiveis_pais # pp possiveis_pais

5
sapl/compilacao/templatetags/compilacao_filters.py

@ -126,11 +126,6 @@ def select_provaveis_inserts(view, request):
return view.select_provaveis_inserts(request) return view.select_provaveis_inserts(request)
@register.filter
def is_relative_auto_insert(dpt, request):
return dpt.is_relative_auto_insert(request.session['perfil_estrutural'])
@register.filter @register.filter
def isinst(value, class_str): def isinst(value, class_str):
classe = value.__class__.__name__ classe = value.__class__.__name__

151
sapl/compilacao/views.py

@ -1041,10 +1041,12 @@ class TextEditView(TemplateView):
class ActionsCommonsMixin: class ActionsCommonsMixin:
def set_message(self, data, _type, message): def set_message(self, data, _type, message, time=None):
data['message'] = { data['message'] = {
'type': _type, 'type': _type,
'value': str(message)} 'value': str(message)}
if time:
data['message']['time'] = time
return return
def get_json_for_refresh(self, dp, dpauto=None): def get_json_for_refresh(self, dp, dpauto=None):
@ -1203,7 +1205,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
p.fim_eficacia = None p.fim_eficacia = None
for d in base.dispositivos_filhos_set.all(): for d in base.dispositivos_filhos_set.all():
if d.is_relative_auto_insert(): if d.auto_inserido:
self.remover_dispositivo(d, bloco) self.remover_dispositivo(d, bloco)
elif not bloco: elif not bloco:
p.dispositivos_filhos_set.add(d) p.dispositivos_filhos_set.add(d)
@ -1226,7 +1228,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
transferir para o caput imediatamente acima visto se transferir para o caput imediatamente acima visto se
tratar de uma exclusão de item?""" tratar de uma exclusão de item?"""
d_nivel_old = d.nivel d_nivel_old = d.nivel
if d.is_relative_auto_insert(): if d.auto_inserido:
d.delete() d.delete()
continue continue
@ -1506,7 +1508,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
if dp.nivel >= nivel: if dp.nivel >= nivel:
continue continue
if dp.is_relative_auto_insert(perfil_pk): if dp.auto_inserido:
continue continue
if prox_possivel and \ if prox_possivel and \
@ -1605,7 +1607,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
if paradentro and not td.permitido_inserir_in( if paradentro and not td.permitido_inserir_in(
tipb, tipb,
include_relative_autos=False, include_relative_autos=True,
perfil_pk=perfil_pk): perfil_pk=perfil_pk):
continue continue
@ -1617,7 +1619,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
for possivelpai in parents: for possivelpai in parents:
if td.permitido_inserir_in( if td.permitido_inserir_in(
possivelpai.tipo_dispositivo, possivelpai.tipo_dispositivo,
include_relative_autos=False, include_relative_autos=True,
perfil_pk=perfil_pk): perfil_pk=perfil_pk):
flag_insercao = True flag_insercao = True
break break
@ -1625,7 +1627,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
if not flag_insercao: if not flag_insercao:
continue continue
if possivelpai.is_relative_auto_insert(perfil_pk): if possivelpai.auto_inserido:
continue continue
if prox_possivel: if prox_possivel:
@ -1694,7 +1696,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
# Dispositivo de Vigência do Texto Original e de Dpts Alterados # Dispositivo de Vigência do Texto Original e de Dpts Alterados
dvt = Dispositivo.objects.get(pk=self.kwargs['dispositivo_id']) dvt = Dispositivo.objects.get(pk=self.kwargs['dispositivo_id'])
if dvt.is_relative_auto_insert(): if dvt.auto_inserido:
dvt = dvt.dispositivo_pai dvt = dvt.dispositivo_pai
try: try:
@ -1823,15 +1825,17 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
if pp.exists() and pp[0].quantidade_permitida >= 0: if pp.exists() and pp[0].quantidade_permitida >= 0:
qtd_existente = Dispositivo.objects.filter( qtd_existente = Dispositivo.objects.filter(
ta_id=dp.ta_id, ta_id=dp.ta_id,
tipo_dispositivo_id=dp.tipo_dispositivo_id).count() tipo_dispositivo_id=dp.tipo_dispositivo_id,
dispositivo_pai=dp.dispositivo_pai).count()
if qtd_existente >= pp[0].quantidade_permitida: if qtd_existente >= pp[0].quantidade_permitida:
return {'pk': base.pk, data = {'pk': base.pk,
'pai': [base.dispositivo_pai.pk, ], 'pai': [base.dispositivo_pai.pk, ]}
'message': str(_('Limite de inserções de ' self.set_message(data, 'warning',
'dispositivos deste tipo ' _('Limite de inserções de '
'foi excedido.')) 'dispositivos deste tipo '
} 'foi excedido.'), time=6000)
return data
ordem = base.criar_espaco( ordem = base.criar_espaco(
espaco_a_criar=1 + count_auto_insert, local=local_add) espaco_a_criar=1 + count_auto_insert, local=local_add)
@ -1860,6 +1864,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
dp.ordem = dp.ordem + Dispositivo.INTERVALO_ORDEM dp.ordem = dp.ordem + Dispositivo.INTERVALO_ORDEM
dp.publicacao = pub_last dp.publicacao = pub_last
dp.auto_inserido = True
dp.save() dp.save()
dp_auto_insert = dp dp_auto_insert = dp
dp = Dispositivo.objects.get(pk=dp_pk) dp = Dispositivo.objects.get(pk=dp_pk)
@ -2071,74 +2076,69 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
perfil_pk = self.request.session['perfil_estrutural'] perfil_pk = self.request.session['perfil_estrutural']
"""Se o usuário selecionar um dispositivo de auto inserção, data = {}
como um caput, por exemplo, a alteração é ndp = Dispositivo.new_instance_based_on(
migrada para o pai imediato""" dispositivo_a_alterar, dispositivo_a_alterar.tipo_dispositivo)
if dispositivo_a_alterar.is_relative_auto_insert(perfil_pk=perfil_pk):
dispositivo_a_alterar = dispositivo_a_alterar.dispositivo_pai
if dispositivo_a_alterar.tipo_dispositivo.dispositivo_de_articulacao: ndp.rotulo = dispositivo_a_alterar.rotulo
pass ndp.texto = dispositivo_a_alterar.texto
ndp.publicacao = bloco_alteracao.publicacao
ndp.dispositivo_vigencia = bloco_alteracao.dispositivo_vigencia
if ndp.dispositivo_vigencia:
ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia
ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_vigencia
else: else:
ndp = Dispositivo.new_instance_based_on( ndp.inicio_eficacia = bloco_alteracao.inicio_eficacia
dispositivo_a_alterar, dispositivo_a_alterar.tipo_dispositivo) ndp.inicio_vigencia = bloco_alteracao.inicio_vigencia
ndp.rotulo = dispositivo_a_alterar.rotulo try:
ndp.texto = dispositivo_a_alterar.texto with transaction.atomic():
ndp.publicacao = bloco_alteracao.publicacao ordem = dispositivo_a_alterar.criar_espaco(
espaco_a_criar=1, local='json_add_in')
ndp.dispositivo_vigencia = bloco_alteracao.dispositivo_vigencia ndp.ordem = ordem
if ndp.dispositivo_vigencia: ndp.dispositivo_atualizador = bloco_alteracao
ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia ndp.ta_publicado = bloco_alteracao.ta
ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_vigencia
else:
ndp.inicio_eficacia = bloco_alteracao.inicio_eficacia
ndp.inicio_vigencia = bloco_alteracao.inicio_vigencia
try: p = dispositivo_a_alterar
with transaction.atomic(): n = dispositivo_a_alterar.dispositivo_subsequente
ordem = dispositivo_a_alterar.criar_espaco(
espaco_a_criar=1, local='json_add_in')
ndp.ordem = ordem
ndp.dispositivo_atualizador = bloco_alteracao
ndp.ta_publicado = bloco_alteracao.ta
p = dispositivo_a_alterar
n = dispositivo_a_alterar.dispositivo_subsequente
ndp.dispositivo_substituido = p
ndp.dispositivo_subsequente = n
if n:
ndp.fim_eficacia = n.inicio_eficacia - \
timedelta(days=1)
ndp.fim_vigencia = n.inicio_vigencia - \
timedelta(days=1)
ndp.save()
p.dispositivo_subsequente = ndp
p.fim_eficacia = ndp.inicio_eficacia - timedelta(days=1)
p.fim_vigencia = ndp.inicio_vigencia - timedelta(days=1)
p.save()
if n:
n.dispositivo_substituido = ndp
n.save()
filhos_diretos = dispositivo_a_alterar.dispositivos_filhos_set
for d in filhos_diretos.all():
d.dispositivo_pai = ndp
d.save()
except Exception as e: ndp.dispositivo_substituido = p
print(e) ndp.dispositivo_subsequente = n
if n:
ndp.fim_eficacia = n.inicio_eficacia - \
timedelta(days=1)
ndp.fim_vigencia = n.inicio_vigencia - \
timedelta(days=1)
ndp.save()
p.dispositivo_subsequente = ndp
p.fim_eficacia = ndp.inicio_eficacia - timedelta(days=1)
p.fim_vigencia = ndp.inicio_vigencia - timedelta(days=1)
p.save()
data = {'pk': ndp.pk, if n:
'pai': [bloco_alteracao.pk, ]} n.dispositivo_substituido = ndp
n.save()
return data filhos_diretos = dispositivo_a_alterar.dispositivos_filhos_set
for d in filhos_diretos.all():
d.dispositivo_pai = ndp
d.save()
self.set_message(
data, 'success',
_('Dispositivo de Alteração adicionado com sucesso.'))
except Exception as e:
print(e)
data.update({'pk': ndp.pk,
'pai': [bloco_alteracao.pk, ]})
return data
class DispositivoDinamicEditView( class DispositivoDinamicEditView(
@ -2226,9 +2226,6 @@ class DispositivoDinamicEditView(
data = self.registra_alteracao(d, dispositivo_a_alterar) data = self.registra_alteracao(d, dispositivo_a_alterar)
self.set_message(
data, 'success',
_('Dispositivo de Alteração adicionado com sucesso.'))
elif formtype == 'get_form_base': elif formtype == 'get_form_base':
texto = request.POST['texto'].strip() texto = request.POST['texto'].strip()
texto_atualizador = request.POST['texto_atualizador'].strip() texto_atualizador = request.POST['texto_atualizador'].strip()

6
sapl/static/js/compilacao_view.js

@ -36,7 +36,7 @@ function textoMultiVigente(item, diff) {
$(".dptt.desativado").removeClass("displaynone"); $(".dptt.desativado").removeClass("displaynone");
$(".dtxt").removeClass("displaynone"); $(".dtxt").removeClass("displaynone");
$(".dtxt.diff").remove(); $(".dtxt.diff").remove();
$(".link_alterador").removeClass("displaynone"); $(".nota-alteracao").removeClass("displaynone");
if (diff) { if (diff) {
$(".dtxt[id^='da'").each(function() { $(".dtxt[id^='da'").each(function() {
@ -126,9 +126,9 @@ function textoVigente(item, link) {
$(item).addClass("selected") $(item).addClass("selected")
$(".dptt.desativado").addClass("displaynone"); $(".dptt.desativado").addClass("displaynone");
$(".link_alterador").removeClass("displaynone"); $(".nota-alteracao").removeClass("displaynone");
if (!link) if (!link)
$(".link_alterador").addClass("displaynone"); $(".nota-alteracao").addClass("displaynone");
if (elv) { if (elv) {
try { try {

19
sapl/static/styles/compilacao.scss

@ -166,7 +166,7 @@ a:link:after, a:visited:after {
.cp { .cp {
.desativado { .desativado {
.dtxt, .dtxt * { .dtxt, .dtxt *, .dpt-link, .dpt-link * {
text-decoration: line-through; text-decoration: line-through;
color: #999 !important; color: #999 !important;
@ -524,8 +524,8 @@ a:link:after, a:visited:after {
display: block; display: block;
& > .dpt-actions-fixed { & > .dpt-actions-fixed {
position: absolute; position: absolute;
right: -0.25em; right: -0.5em;
top: 0px; top: -0.5em;
z-index: 3; z-index: 3;
opacity: 0; opacity: 0;
@ -547,10 +547,10 @@ a:link:after, a:visited:after {
display: none; display: none;
} }
& > .dpt-text { & > .dpt-text {
cursor: pointer; cursor: text;
min-height: 30px; min-height: 30px;
border: 1px solid transparent; border: 1px solid transparent;
&:hover { &:hover, &.hover-fixed {
background-color: rgba(0, 0, 0, 0.01); background-color: rgba(0, 0, 0, 0.01);
color: $color_buttons; color: $color_buttons;
border: 1px solid #eee; border: 1px solid #eee;
@ -568,9 +568,14 @@ a:link:after, a:visited:after {
&:hover { &:hover {
& > .dpt-actions-fixed { & > .dpt-actions-fixed {
opacity: 0.8; opacity: 1;
&:hover { &:hover {
opacity: 1; & ~ .dpt-text {
background-color: rgba(0, 0, 0, 0.01);
color: $color_buttons;
border: 1px solid #eee;
transition: color 0.3s ease;
}
} }
} }
} }

2
sapl/templates/compilacao/dispositivo_form_search_fragment.html

@ -24,7 +24,7 @@
{% endif %} {% endif %}
{% endifchanged %} {% endifchanged %}
{% if dpt.tipo_dispositivo.dispositivo_de_alteracao or dpt.dispositivo_pai.nivel > 0 and dpt.is_relative_auto_insert and dpt.dispositivo_pai not in object_list %} {% if dpt.tipo_dispositivo.dispositivo_de_alteracao or dpt.dispositivo_pai.nivel > 0 and dpt.auto_inserido and dpt.dispositivo_pai not in object_list %}
<li> <li>
<div class="iteminput"> <div class="iteminput">
<input type="{{request.GET.data_type_selection}}" name="{{request.GET.data_field}}" id="dpt{{dpt.pk}}" value="{{dpt.pk}}"/> <input type="{{request.GET.data_type_selection}}" name="{{request.GET.data_field}}" id="dpt{{dpt.pk}}" value="{{dpt.pk}}"/>

4
sapl/templates/compilacao/text_edit_bloco.html

@ -4,6 +4,7 @@
{% dispositivotree dispositivos_list %} {% dispositivotree dispositivos_list %}
<div class="dpt" id="id{{node.dpt.id}}" pk="{{node.dpt.pk}}" ordem="{{node.dpt.ordem}}" name="{{node.dpt.pk}}" title="{{node.dpt.pk}} - {{node.dpt.ordem}}" formtype="get_form_base"> <div class="dpt" id="id{{node.dpt.id}}" pk="{{node.dpt.pk}}" ordem="{{node.dpt.ordem}}" name="{{node.dpt.pk}}" title="{{node.dpt.pk}} - {{node.dpt.ordem}}" formtype="get_form_base">
<div class="dpt-actions"></div>
<div class="dpt-actions-fixed"> <div class="dpt-actions-fixed">
<a class="btn-action btn-dpt-edit btn btn-default btn-sm" pk="{{node.dpt.pk}}" title=""><span class="deactivate">{% trans 'Editar'%}</span><span class="activate">{% trans 'Em Edição'%}:</span> {{ node.td.nome }} {{ node.dpt.rotulo }}</a> <a class="btn-action btn-dpt-edit btn btn-default btn-sm" pk="{{node.dpt.pk}}" title=""><span class="deactivate">{% trans 'Editar'%}</span><span class="activate">{% trans 'Em Edição'%}:</span> {{ node.td.nome }} {{ node.dpt.rotulo }}</a>
<div class="btn-group"> <div class="btn-group">
@ -12,8 +13,7 @@
{% if not node.dpt.rotulo and not node.dpt.texto and node.td.dispositivo_de_articulacao%} {% if not node.dpt.rotulo and not node.dpt.texto and node.td.dispositivo_de_articulacao%}
{% endif %} {% endif %}
</div> </div>
<div class="dpt-actions"></div> <div class="dpt-text {{node.td.class_css}} {%if node.dpt.fim_vigencia %}desativado{%endif%} {%if not node.filhos and node.td.dispositivo_de_articulacao %}hover-fixed{%endif%}">
<div class="dpt-text {{node.td.class_css}} {%if node.dpt.fim_vigencia %}desativado{%endif%} {%if node.dpt.rotulo or node.dpt.texto or not node.td.dispositivo_de_articulacao %}btn-dpt-edit{%endif%}" title="{% trans 'Editar' %} {{node.td.nome}}">
{{ node.td.rotulo_prefixo_html|safe }} {{ node.td.rotulo_prefixo_html|safe }}
{% if node.da and node in node.da.alts %} {% if node.da and node in node.da.alts %}

14
sapl/templates/compilacao/text_list_bloco.html

@ -19,9 +19,17 @@
{% spaceless %} {% spaceless %}
<div class="{{ dpt.tipo_dispositivo.class_css }}"> <div class="{{ dpt.tipo_dispositivo.class_css }}">
<div class="dptt {% dispositivo_desativado dpt view.inicio_vigencia view.fim_vigencia %}" id="dptt{{dpt.pk}}" > <div class="dptt {% dispositivo_desativado dpt view.inicio_vigencia view.fim_vigencia %}" id="dptt{{dpt.pk}}" >
{{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }} {% if not dpt.tipo_dispositivo.dispositivo_de_articulacao %}
<a class="dpt-link" name="{{dpt.pk}}" title="{{dpt.pk}}">{{ dpt.rotulo }}</a> {% if dpt.auto_inserido %}
{{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }} {{ dpt.dispositivo_pai.tipo_dispositivo.rotulo_prefixo_html|safe }}
<a class="dpt-link" name="{{dpt.pk}}">{{ dpt.dispositivo_pai.rotulo }}</a>
{{ dpt.dispositivo_pai.tipo_dispositivo.rotulo_sufixo_html|safe }}
{% else %}
{{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}
<a class="dpt-link" name="{{dpt.pk}}" title="{{dpt.pk}}">{{ dpt.rotulo }}</a>
{{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}
{% endif %}
{% endif %}
<span class="dtxt" id="d{% if not dpt.dispositivo_subsequente_id and dpt.dispositivo_substituido_id %}a{% endif %}{{dpt.pk}}" pks="{{dpt.dispositivo_substituido_id|default:''}}" pk="{{dpt.pk}}">{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{%if dpt.texto %}{{ dpt.texto|safe }}{%else%}{%if not dpt.tipo_dispositivo.dispositivo_de_articulacao %}&nbsp;{% endif %}{% endif %}</span> <span class="dtxt" id="d{% if not dpt.dispositivo_subsequente_id and dpt.dispositivo_substituido_id %}a{% endif %}{{dpt.pk}}" pks="{{dpt.dispositivo_substituido_id|default:''}}" pk="{{dpt.pk}}">{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{%if dpt.texto %}{{ dpt.texto|safe }}{%else%}{%if not dpt.tipo_dispositivo.dispositivo_de_articulacao %}&nbsp;{% endif %}{% endif %}</span>
{% if dpt.ta_publicado_id and not dpt.tipo_dispositivo.dispositivo_de_articulacao %} {% if dpt.ta_publicado_id and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}
<a class="nota-alteracao" href="{%url 'sapl.compilacao:ta_text' dpt.ta_publicado.pk %}#{{dpt.dispositivo_atualizador_id}}"> <a class="nota-alteracao" href="{%url 'sapl.compilacao:ta_text' dpt.ta_publicado.pk %}#{{dpt.dispositivo_atualizador_id}}">

16
sapl/templates/compilacao/text_list_blocoalteracao.html

@ -3,11 +3,19 @@
{% for ch in dpt.pk|get_bloco_atualizador %} {% for ch in dpt.pk|get_bloco_atualizador %}
{% spaceless %} {% spaceless %}
{% if ch.visibilidade %} {% if ch.visibilidade %}
<div class="dpt" id="d{{ch.id}}" nivel="{{ch.nivel}}"> <div class="dpt" id="d{{ch.id}}" nivel="{{ch.nivel}}">
<div class="{{ ch.tipo_dispositivo.class_css }}" id="id{{ch.id}}" nivel="{{ch.nivel}}"> <div class="{{ ch.tipo_dispositivo.class_css }}" id="id{{ch.id}}" nivel="{{ch.nivel}}">
{{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }}<a name="{{ch.pk}}" href="{% url 'sapl.compilacao:ta_text' ch.ta.pk %}#{{ch.pk}}">{{ ch.rotulo }}</a>{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ ch.tipo_dispositivo.texto_prefixo_html|safe }}{{ ch.texto|safe }} {% if ch.auto_inserido %}
{{ ch.dispositivo_pai.tipo_dispositivo.rotulo_prefixo_html|safe }}
<a name="{{ch.dispositivo_pai.pk}}" href="{% url 'sapl.compilacao:ta_text' ch.dispositivo_pai.ta.pk %}#{{ch.dispositivo_pai.pk}}">{{ ch.dispositivo_pai.rotulo }}</a>
{{ ch.dispositivo_pai.tipo_dispositivo.rotulo_sufixo_html|safe }}
{% endif %}
{{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }}
<a name="{{ch.pk}}" href="{% url 'sapl.compilacao:ta_text' ch.ta.pk %}#{{ch.pk}}">{{ ch.rotulo }}</a>
{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }}
{{ ch.tipo_dispositivo.texto_prefixo_html|safe }}{{ ch.texto|safe }}
</div>
</div> </div>
</div>
{%endif%} {%endif%}
{% endspaceless %} {% endspaceless %}
{% endfor %} {% endfor %}

Loading…
Cancel
Save