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

10
sapl/compilacao/views.py

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

2
sapl/templates/compilacao/dispositivo_form.html

@ -29,7 +29,7 @@
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li> <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 %}"> <a href="{% url view.get_url_this_view parent.ta_id parent.pk %}">
{{parent.dispositivo0}} - {{parent|nomenclatura}} {{parent.dispositivo0}} - {{parent|nomenclatura}}
</a> </a>

Loading…
Cancel
Save