diff --git a/compilacao/models.py b/compilacao/models.py
index a5f1b7bc0..d1a0aa6e9 100644
--- a/compilacao/models.py
+++ b/compilacao/models.py
@@ -133,7 +133,7 @@ class TextoArticulado(TimestampedMixin):
'numero': self.numero,
'data': defaultfilters.date(self.data, "d \d\e F \d\e Y")}
- def organizar_ordem_de_dispositivos(self):
+ def ordenar_dispositivos(self):
dpts = Dispositivo.objects.filter(ta=self)
@@ -1148,6 +1148,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
dispositivo_base.get_numero_completo())
dp.nivel = dispositivo_base.nivel
dp.texto = ''
+ dp.visibilidade = True
dp.ta = dispositivo_base.ta
dp.dispositivo_pai = dispositivo_base.dispositivo_pai
dp.publicacao = dispositivo_base.publicacao
@@ -1203,6 +1204,32 @@ class Dispositivo(BaseModel, TimestampedMixin):
else:
dispositivo.set_numero_completo([1, 0, 0, 0, 0, 0, ])
+ def ordenar_bloco_alteracao(self):
+ if not self.tipo_dispositivo.dispositivo_de_articulacao or\
+ not self.tipo_dispositivo.dispositivo_de_alteracao:
+ return
+
+ filhos = Dispositivo.objects.order_by(
+ 'ordem_bloco_atualizador').filter(
+ Q(dispositivo_pai_id=self.pk) |
+ Q(dispositivo_atualizador_id=self.pk))
+
+ if not filhos.exists():
+ return
+
+ ordem_max = filhos.last().ordem_bloco_atualizador
+ filhos.update(
+ ordem_bloco_atualizador=F('ordem_bloco_atualizador') + ordem_max)
+
+ filhos = filhos.values_list(
+ 'pk', flat=True).order_by('ordem_bloco_atualizador')
+
+ count = 0
+ for d in filhos:
+ count += Dispositivo.INTERVALO_ORDEM
+ Dispositivo.objects.filter(pk=d).update(
+ ordem_bloco_atualizador=count)
+
class Vide(TimestampedMixin):
texto = models.TextField(verbose_name=_('Texto do Vide'))
diff --git a/compilacao/views.py b/compilacao/views.py
index 44e4821e7..13136e191 100644
--- a/compilacao/views.py
+++ b/compilacao/views.py
@@ -1,6 +1,6 @@
-import sys
from collections import OrderedDict
from datetime import datetime, timedelta
+import sys
from braces.views import FormMessagesMixin
from django import forms
@@ -37,6 +37,7 @@ from compilacao.models import (Dispositivo, Nota,
from compilacao.utils import DISPOSITIVO_SELECT_RELATED
from crud.base import Crud, CrudListView, make_pagination
+
TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')
@@ -1249,9 +1250,9 @@ class DispositivoSimpleEditView(TextEditView):
if len(result) > 2:
result.pop()
- if tipb.dispositivo_de_articulacao and\
- tipb.dispositivo_de_alteracao:
- result.pop()
+ # if tipb.dispositivo_de_articulacao and\
+ # tipb.dispositivo_de_alteracao:
+ # result.pop()
except Exception as e:
print(e)
@@ -1337,7 +1338,7 @@ class ActionsEditMixin:
try:
with transaction.atomic():
data['message'] = str(self.remover_dispositivo(base, bloco))
- ta_base.organizar_ordem_de_dispositivos()
+ ta_base.ordenar_dispositivos()
except Exception as e:
print(e)
data['pk'] = context['dispositivo_id']
@@ -1859,6 +1860,13 @@ class ActionsEditMixin:
filho.rotulo = filho.rotulo_padrao()
filho.save()
+ ''' Reordenar bloco atualizador caso a inserção seja
+ dentro de um bloco de alteração'''
+
+ if dp.tipo_dispositivo.dispositivo_de_alteracao and\
+ not dp.tipo_dispositivo.dispositivo_de_articulacao:
+ dp.dispositivo_pai.ordenar_bloco_alteracao()
+
except Exception as e:
print(e)
@@ -1907,6 +1915,49 @@ class ActionsEditMixin:
return data
+ def move_dpt_alterado(self, context):
+
+ bloco = Dispositivo.objects.get(pk=context['bloco_pk'])
+ dpt = Dispositivo.objects.get(pk=context['dispositivo_id'])
+
+ if dpt.tipo_dispositivo.dispositivo_de_alteracao:
+ dpt.dispositivo_pai = bloco
+ else:
+ dpt.dispositivo_atualizador = bloco
+
+ filhos = Dispositivo.objects.order_by(
+ 'ordem_bloco_atualizador').filter(
+ Q(dispositivo_pai_id=bloco.pk) |
+ Q(dispositivo_atualizador_id=bloco.pk))
+
+ if not filhos.exists():
+ dpt.ordem_bloco_atualizador = Dispositivo.INTERVALO_ORDEM
+ else:
+ index = int(context['index'])
+ fpks = filhos.values_list(
+ 'pk', flat=True).order_by('ordem_bloco_atualizador')
+
+ index_dpt = 0
+ try:
+ index_dpt = list(fpks).index(dpt.pk)
+ except:
+ pass
+
+ filho_index = filhos[
+ index if index_dpt >= index
+ else index + 1] if (
+ index if index_dpt >= index
+ else index + 1) < filhos.count() else filhos.last()
+ if filhos.last() == filho_index:
+ dpt.ordem_bloco_atualizador = \
+ filho_index.ordem_bloco_atualizador + 1
+ else:
+ dpt.ordem_bloco_atualizador = \
+ filho_index.ordem_bloco_atualizador - 1
+
+ dpt.save()
+ bloco.ordenar_bloco_alteracao()
+
class ActionsEditView(ActionsEditMixin, TemplateView):
@@ -1926,6 +1977,10 @@ class ActionsEditView(ActionsEditMixin, TemplateView):
del self.request.session['herancas']
del self.request.session['herancas_fila']
+ if context['action'] == 'move_dpt_alterado':
+ context['index'] = self.request.GET['index']
+ context['bloco_pk'] = self.request.GET['bloco_pk']
+
return self.render_to_json_response(context, **response_kwargs)
diff --git a/static/js/compilacao_edit.js b/static/js/compilacao_edit.js
index c460ed3c7..5b17f425e 100644
--- a/static/js/compilacao_edit.js
+++ b/static/js/compilacao_edit.js
@@ -268,9 +268,13 @@ function reloadFunctionClicks() {
revert: true,
stop: function( event, ui ) {
var pk = ui.item.attr('pk');
- var pk_bloco = ui.item.closest('.bloco').closest('.dpt').attr('pk');
- console.log(pk+ ' - '+ pk_bloco);
- },
+ var bloco_pk = ui.item.closest('.bloco').closest('.dpt').attr('pk');
+
+ url = pk+'/actions?action=move_dpt_alterado&index='+ui.item.index()+'&bloco_pk='+bloco_pk;
+ $.get(url).done(function( data ) {
+ console.log(pk+ ' - '+ bloco_pk);
+ });
+ }
});
$( ".bloco_alteracao .dpt" ).draggable({
@@ -278,10 +282,10 @@ function reloadFunctionClicks() {
revert: 'invalid',
zIndex: 1,
drag: function( event, ui ) {
- $( ".bloco_alteracao" ).css('border-width', '2px');
+ $( ".bloco_alteracao" ).addClass('drag');
},
stop: function( event, ui ) {
- $( ".bloco_alteracao" ).css('border-width', '0px');
+ $( ".bloco_alteracao" ).removeClass('drag');
},
});
diff --git a/static/styles/compilacao.scss b/static/styles/compilacao.scss
index 40163d5ad..a35b694b8 100644
--- a/static/styles/compilacao.scss
+++ b/static/styles/compilacao.scss
@@ -524,9 +524,9 @@ a:link:after, a:visited:after {
.caput {
margin-top: 0;
}
- & > .actions_left {
+ & > .actions_right {
color: #fff;
- left: 0em;
+ right: 0em;
position: absolute;
opacity: 0;
transition: all 0.4s ease-in-out;
@@ -542,7 +542,7 @@ a:link:after, a:visited:after {
}
}
- &:hover > .actions_left {
+ &:hover > .actions_right {
opacity: 1;
}
@@ -565,7 +565,13 @@ a:link:after, a:visited:after {
padding: 0em ;
background-color: transparent;
min-height: 100px;
- border: 0px dashed #d9ddde;
+ border: 2px dashed #fff;
+ &:hover {
+ border-color: #d9ddde;
+ }
+ &.drag {
+ border-color: #d9ddde;
+ }
.dpt {
width: 100% !important;
box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);
@@ -636,7 +642,7 @@ a:link:after, a:visited:after {
}
}
- & > .actions_left {
+ & > .actions_right {
display: none;
}
diff --git a/templates/compilacao/text_edit_bloco.html b/templates/compilacao/text_edit_bloco.html
index d2cad7afb..55dd97cd7 100644
--- a/templates/compilacao/text_edit_bloco.html
+++ b/templates/compilacao/text_edit_bloco.html
@@ -3,154 +3,156 @@
{% load common_tags %}
{% for dpt in object_list %}
- {% if dpt.nivel == view.flag_nivel_old %}
-
- {% elif dpt.nivel < view.flag_nivel_old %}
- {% close_div view.flag_nivel_old dpt.nivel 0 %}
- {% endif%}
-
- {% if forloop.first and view|isinst:'DispositivoSimpleEditView' %}
+ {% if dpt.tipo_dispositivo.dispositivo_de_alteracao and not dpt.tipo_dispositivo.dispositivo_de_articulacao%}
{% else %}
-
- {% endif%}
-
- {% if view|render_actions_head:dpt %}
-
+ {% elif dpt.nivel < view.flag_nivel_old %}
+ {% close_div view.flag_nivel_old dpt.nivel 0 %}
+ {% endif%}
+
+ {% if forloop.first and view|isinst:'DispositivoSimpleEditView' %}
+ {% else %}
+
+ {% endif%}
+
+ {% if view|render_actions_head:dpt %}
+
- {% endif%}
+
- {% if view.pk_view == 0 and view.pk_edit == 0 or view.pk_edit != view.pk_view %}
- {% if not dpt.rotulo and not dpt.texto and dpt.tipo_dispositivo.dispositivo_de_articulacao%}
-
- {% endif %}
-
- {% spaceless %}
- {% if not dpt.tipo_dispositivo.dispositivo_de_alteracao %}
-
{{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ dpt.rotulo }}{{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{% if dpt.texto == '' and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}({{dpt.tipo_dispositivo}} sem texto){%else%}{{ dpt.texto|safe }}{%endif%}
- {% endif %}
- {% if dpt.ta_publicado_id != None and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}
-
- {{ dpt.tipo_dispositivo.nota_automatica_prefixo_html|safe }}
- {% nota_automatica dpt ta_pub_list %}
- {{ dpt.tipo_dispositivo.nota_automatica_sufixo_html|safe }}
-
- {% endif %}
- {% endspaceless %}
- {% if dpt.tipo_dispositivo.dispositivo_de_alteracao %}
- {%with node=dpt template_name='compilacao/text_edit_blocoalteracao.html' %}
- {%include template_name%}
- {%endwith%}
- {% endif%}
-
- {% endif%}
+ {% endif%}
- {% set_nivel_old view dpt.nivel %}
+ {% if view.pk_view == 0 and view.pk_edit == 0 or view.pk_edit != view.pk_view %}
+ {% if not dpt.rotulo and not dpt.texto and dpt.tipo_dispositivo.dispositivo_de_articulacao%}
+
+ {% endif %}
+
+ {% spaceless %}
+ {% if not dpt.tipo_dispositivo.dispositivo_de_alteracao %}
+
{{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ dpt.rotulo }}{{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{% if dpt.texto == '' and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}({{dpt.tipo_dispositivo}} sem texto){%else%}{{ dpt.texto|safe }}{%endif%}
+ {% endif %}
+ {% if dpt.ta_publicado_id != None and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}
+
+ {{ dpt.tipo_dispositivo.nota_automatica_prefixo_html|safe }}
+ {% nota_automatica dpt ta_pub_list %}
+ {{ dpt.tipo_dispositivo.nota_automatica_sufixo_html|safe }}
+
+ {% endif %}
+ {% endspaceless %}
+ {% if dpt.tipo_dispositivo.dispositivo_de_alteracao %}
+ {%with node=dpt template_name='compilacao/text_edit_blocoalteracao.html' %}
+ {%include template_name%}
+ {%endwith%}
+ {% endif%}
+
+ {% endif%}
+ {% set_nivel_old view dpt.nivel %}
+ {% endif%}
{% endfor %}
{% if view|isinst:'DispositivoSimpleEditView' %}
diff --git a/templates/compilacao/text_list_bloco.html b/templates/compilacao/text_list_bloco.html
index 5b10e7f75..831df3660 100644
--- a/templates/compilacao/text_list_bloco.html
+++ b/templates/compilacao/text_list_bloco.html
@@ -3,172 +3,175 @@
{% load common_tags %}
{% for dpt in object_list %}
- {% if dpt.nivel == view.flag_nivel_old %}
-
- {% elif dpt.nivel < view.flag_nivel_old %}
- {% close_div view.flag_nivel_old dpt.nivel 0 %}
- {% endif%}
-
- {% if forloop.first and not view|isinst:'TextView' %}
+ {% if dpt.tipo_dispositivo.dispositivo_de_alteracao and not dpt.tipo_dispositivo.dispositivo_de_articulacao%}
{% else %}
-
- {% endif%}
-
- {% spaceless %}
-
-
- {{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}
-
{{ dpt.rotulo }}
- {{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}
-
{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{%if dpt.texto %}{{ dpt.texto|safe }}{%else%}{%if not dpt.tipo_dispositivo.dispositivo_de_articulacao %} {% endif %}{% endif %}
- {% if dpt.ta_publicado_id and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}
-
- {{ dpt.tipo_dispositivo.nota_automatica_prefixo_html|safe }}
- {% nota_automatica dpt ta_pub_list %}
- {{ dpt.tipo_dispositivo.nota_automatica_sufixo_html|safe }}
-
- {% endif %}
- {% if user.is_authenticated and not dpt.tipo_dispositivo.dispositivo_de_articulacao%}
- {% if perms.compilacao.add_nota or perms.compilacao.add_vide or perms.compilacao.change_dispositivo%}
-
-
- {% if perms.compilacao.change_dispositivo %}- Ed
{% endif %}
- {% if perms.compilacao.add_nota %}- N
{% endif %}
- {% if perms.compilacao.add_vide %}- V
{% endif %}
-
-
-
- {% endif %}
- {% endif %}
+ {% if dpt.nivel == view.flag_nivel_old %}
+ {% elif dpt.nivel < view.flag_nivel_old %}
+ {% close_div view.flag_nivel_old dpt.nivel 0 %}
+ {% endif%}
- {% if not dpt.tipo_dispositivo.dispositivo_de_articulacao%}
-
{# Dispostivo Nota e Vides #}
-
{# Dispostivo Nota Lista#}
-
- {% if cita and cita|lookup:dpt.pk %}
- {% for vide in cita|lookup:dpt.pk %}
+ {% if forloop.first and not view|isinst:'TextView' %}
+ {% else %}
+
+ {% endif%}
- {%if not forloop.first %}
-
- •
- {% endif %}
-
-
-
-
- {% if user.is_authenticated %}
- {% if perms.compilacao.change_vide %}
- - Editar
- - •
- {% endif %}
- {% if perms.compilacao.delete_vide %}
- - Excluir
- - •
- {% endif %}
- {% endif %}
- - {{vide.tipo.nome}}
- - •
- - {{vide.created|date:"d M Y"}}
-
- Vide:
-
- {% if vide.dispositivo_ref.dispositivo_pai.nivel != 0 and vide.dispositivo_ref.dispositivo_pai.tipo_dispositivo.dispositivo_de_articulacao %}
-
{{ vide.dispositivo_ref}} {% trans 'do'%} {{ vide.dispositivo_ref.dispositivo_pai}} - {{ vide.dispositivo_ref.dispositivo_pai.ta}}
- {% else %}
-
{{ vide.dispositivo_ref}} - {{vide.dispositivo_ref.ta}}
- {% endif %}
- {% if vide.texto %} - {{vide.texto}}{% endif %}
-
-
- {% endfor %}
+ {% spaceless %}
+
+
+ {{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}
+
{{ dpt.rotulo }}
+ {{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}
+
{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{%if dpt.texto %}{{ dpt.texto|safe }}{%else%}{%if not dpt.tipo_dispositivo.dispositivo_de_articulacao %} {% endif %}{% endif %}
+ {% if dpt.ta_publicado_id and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}
+
+ {{ dpt.tipo_dispositivo.nota_automatica_prefixo_html|safe }}
+ {% nota_automatica dpt ta_pub_list %}
+ {{ dpt.tipo_dispositivo.nota_automatica_sufixo_html|safe }}
+
+ {% endif %}
+ {% if user.is_authenticated and not dpt.tipo_dispositivo.dispositivo_de_articulacao%}
+ {% if perms.compilacao.add_nota or perms.compilacao.add_vide or perms.compilacao.change_dispositivo%}
+
+
+ {% if perms.compilacao.change_dispositivo %}- Ed
{% endif %}
+ {% if perms.compilacao.add_nota %}- N
{% endif %}
+ {% if perms.compilacao.add_vide %}- V
{% endif %}
+
+
+
{% endif %}
+ {% endif %}
+
- {% if citado and citado|lookup:dpt.pk %}
- {% if cita and cita|lookup:dpt.pk %}
-
- •
- {% endif %}
+ {% if not dpt.tipo_dispositivo.dispositivo_de_articulacao%}
+
{# Dispostivo Nota e Vides #}
+
-
- {% endif%}
-
- {% endspaceless %}
- {% if dpt.tipo_dispositivo.dispositivo_de_alteracao%}
- {%with node=dpt template_name='compilacao/text_list_blocoalteracao.html' %}
- {%include template_name%}
- {%endwith%}
- {% endif%}
- {% set_nivel_old view dpt.nivel %}
+ {% endfor %}
+ {% endif %}
+ {%if notas and notas|lookup:dpt.pk and cita and cita|lookup:dpt.pk or notas and notas|lookup:dpt.pk and citado and citado|lookup:dpt.pk %}
+
- •
+ {% endif %}
+ {% if notas and notas|lookup:dpt.pk %}
+ {% for nota in notas|lookup:dpt.pk %}
+
+ {% if user.is_superuser or nota.publicidade == nota.NPUBL or nota.publicidade == nota.NINST and user.is_authenticated or nota.publicidade == nota.NPRIV and nota.owner == user %}
+ {%if not forloop.first %}
+
- •
+ {% endif %}
+
-
+
+ {% if user.is_authenticated %}
+ {% if user == nota.owner and perms.compilacao.change_nota or user.is_superuser%}
+ - Editar
+ - •
+ {% endif %}
+ {% if user == nota.owner and perms.compilacao.delete_nota or user.is_superuser %}
+ - Excluir
+ - •
+ {% endif %}
+ {% endif %}
+ - {{nota.tipo.nome}}
+ - •
+ - {%if nota.owner.first_name%}{{nota.owner.first_name}}{%else%}{{nota.owner}}{% endif %}
+ - •
+ - {{nota.publicacao|date:"d M Y"}}
+
+
+ {%if nota.titulo %}
+
+ {% endif %}
+
+
+ {%comment%}
+
+ - {{nota.efetividade|date:"d M Y"}}
+ - •
+ - {{nota.get_publicidade_display}}
+
+ {%endcomment%}
+
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+
+
+ {% endif%}
+
+ {% endspaceless %}
+ {% if dpt.tipo_dispositivo.dispositivo_de_alteracao%}
+ {%with node=dpt template_name='compilacao/text_list_blocoalteracao.html' %}
+ {%include template_name%}
+ {%endwith%}
+ {% endif%}
+ {% set_nivel_old view dpt.nivel %}
+ {% endif %}
{% endfor %}
{% if not view|isinst:'TextView' %}