Browse Source

refatora seleção de dispositivos raizes

pull/2147/head
Leandro Roberto 6 years ago
parent
commit
97fd7aeaab
  1. 30
      sapl/compilacao/models.py
  2. 10
      sapl/compilacao/views.py
  3. 2
      sapl/templates/compilacao/dispositivo_form.html

30
sapl/compilacao/models.py

@ -1465,7 +1465,7 @@ class Dispositivo(BaseModel, TimestampedMixin):
tipo_dispositivo_id=self.tipo_dispositivo.pk))
else: # contagem continua restrita a articulacao
proxima_articulacao = self.get_proximo_nivel_zero()
proxima_articulacao = self.select_next_root()
if proxima_articulacao is None:
irmaos = list(Dispositivo.objects.filter(
@ -1557,25 +1557,15 @@ class Dispositivo(BaseModel, TimestampedMixin):
irmao.clean()
irmao.save()
def get_proximo_nivel_zero(self):
proxima_articulacao = Dispositivo.objects.order_by('ordem').filter(
ordem__gt=self.ordem,
nivel=0,
ta_id=self.ta_id).first()
return proxima_articulacao
def get_nivel_zero_anterior(self):
anterior_articulacao = Dispositivo.objects.order_by('ordem').filter(
ordem__lt=self.ordem,
nivel=0,
ta_id=self.ta_id).last()
return anterior_articulacao
def get_niveis_zero(self):
niveis_zero = Dispositivo.objects.order_by('ordem').filter(
nivel=0,
ta_id=self.ta_id)
return niveis_zero
def select_roots(self):
return Dispositivo.objects.order_by(
'ordem').filter(nivel=0, ta_id=self.ta_id)
def select_next_root(self):
return self.select_roots().filter(ordem__gt=self.ordem).first()
def select_prev_root(self):
return self.select_roots().filter(ordem__lt=self.ordem).last()
# metodo obsoleto, foi acrescentado o campo auto_inserido no modelo
def is_relative_auto_insert__obsoleto(self, perfil_pk=None):

10
sapl/compilacao/views.py

@ -1391,7 +1391,7 @@ class ActionsCommonsMixin:
pkfilho = dp.pk
dp = dp.dispositivo_pai
proxima_articulacao = dp.get_proximo_nivel_zero()
proxima_articulacao = dp.select_next_root()
if proxima_articulacao is not None:
parents = Dispositivo.objects.filter(
@ -1484,7 +1484,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
data = {}
if not base_anterior or base == base.get_raiz():
base_anterior = base.get_nivel_zero_anterior()
base_anterior = base.select_prev_root()
if not base_anterior:
base_anterior = base
data = self.get_json_for_refresh(base_anterior)
@ -1545,7 +1545,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
print(e)
base.delete()
else:
proxima_articulacao = base.get_proximo_nivel_zero()
proxima_articulacao = base.select_next_root()
if not bloco:
# tranferir filhos para primeiro pai possível acima da base
# de exclusão
@ -1703,7 +1703,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
base_adicao = {}
nivel_zero_anterior = base.get_nivel_zero_anterior()
nivel_zero_anterior = base.select_prev_root()
if nivel_zero_anterior:
nivel_zero_anterior = nivel_zero_anterior.ordem
else:
@ -2383,7 +2383,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
if dp.nivel == 0:
proxima_articulacao = dp.get_proximo_nivel_zero()
proxima_articulacao = dp.select_next_root()
if not proxima_articulacao:
filhos_continuos = list(Dispositivo.objects.filter(

2
sapl/templates/compilacao/dispositivo_form.html

@ -29,7 +29,7 @@
</a>
<ul class="dropdown-menu">
<li>
{%for parent in object.get_niveis_zero %}
{%for parent in object.select_roots %}
<a href="{% url view.get_url_this_view parent.ta_id parent.pk %}">
{{parent.dispositivo0}} - {{parent|nomenclatura}}
</a>

Loading…
Cancel
Save