From 97fd7aeaabf963e79efc0a2f543c7a0a03abc9c0 Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Wed, 15 Aug 2018 15:16:59 -0300 Subject: [PATCH] =?UTF-8?q?refatora=20sele=C3=A7=C3=A3o=20de=20dispositivo?= =?UTF-8?q?s=20raizes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/compilacao/models.py | 30 +++++++------------ sapl/compilacao/views.py | 10 +++---- .../compilacao/dispositivo_form.html | 2 +- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index 6ffb738b1..28b963038 100644 --- a/sapl/compilacao/models.py +++ b/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): diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index 0efa36be0..dac910cc2 100644 --- a/sapl/compilacao/views.py +++ b/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( diff --git a/sapl/templates/compilacao/dispositivo_form.html b/sapl/templates/compilacao/dispositivo_form.html index 0e1d1f0f0..15d383600 100644 --- a/sapl/templates/compilacao/dispositivo_form.html +++ b/sapl/templates/compilacao/dispositivo_form.html @@ -29,7 +29,7 @@