Browse Source

impl analise de pais e filhos rel nos perfis herdados

pull/1715/head
LeandroRoberto 7 years ago
parent
commit
4ab3ad2da5
  1. 11
      sapl/compilacao/models.py
  2. 23
      sapl/compilacao/views.py
  3. 0
      scripts/hooks/pre-commit

11
sapl/compilacao/models.py

@ -1,5 +1,4 @@
import reversion
from django.contrib import messages
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
@ -13,6 +12,8 @@ from django.utils import timezone
from django.utils.decorators import classonlymethod
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
import reversion
from sapl.compilacao.utils import (get_integrations_view_names, int_to_letter,
int_to_roman)
from sapl.utils import YES_NO_CHOICES, get_settings_auth_user_model
@ -103,6 +104,14 @@ class PerfilEstruturalTextoArticulado(BaseModel):
def __str__(self):
return self.nome
@property
def parents(self):
if not self.parent:
return []
parents = self.parent.parents + [self.parent, ]
return parents
@reversion.register()
class TipoTextoArticulado(models.Model):

23
sapl/compilacao/views.py

@ -1,7 +1,7 @@
import logging
import sys
from collections import OrderedDict
from datetime import timedelta
import logging
import sys
from braces.views import FormMessagesMixin
from django import forms
@ -19,13 +19,14 @@ from django.http.response import (HttpResponse, HttpResponseRedirect,
from django.shortcuts import get_object_or_404, redirect
from django.utils.dateparse import parse_date
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import string_concat
from django.utils.translation import ugettext_lazy as _
from django.views.generic.base import TemplateView
from django.views.generic.detail import DetailView
from django.views.generic.edit import (CreateView, DeleteView, FormView,
UpdateView)
from django.views.generic.list import ListView
from sapl.compilacao.forms import (DispositivoDefinidorVigenciaForm,
DispositivoEdicaoAlteracaoForm,
DispositivoEdicaoBasicaForm,
@ -49,6 +50,7 @@ from sapl.compilacao.utils import (DISPOSITIVO_SELECT_RELATED,
from sapl.crud.base import Crud, CrudListView, make_pagination
from sapl.settings import BASE_DIR
TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')
@ -2187,12 +2189,18 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
else:
raise Exception('Não existe perfil padrão!')
perfil_parents = PerfilEstruturalTextoArticulado.objects.get(
pk=context['perfil_pk'])
perfil_parents = perfil_parents.parents + [perfil_parents, ]
perfil_parents.reverse()
dp_irmao = None
dp_pai = None
for dp in parents:
if dp.tipo_dispositivo == tipo:
dp_irmao = dp
break
if tipo.permitido_inserir_in(
dp.tipo_dispositivo,
perfil_pk=context['perfil_pk']):
@ -2230,9 +2238,10 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
# verificar se existe restrição de quantidade de itens
if dp.dispositivo_pai:
for perfil in perfil_parents:
pp = dp.tipo_dispositivo.possiveis_pais.filter(
pai_id=dp.dispositivo_pai.tipo_dispositivo_id,
perfil_id=context['perfil_pk'])
perfil=perfil)
if pp.exists() and pp[0].quantidade_permitida >= 0:
qtd_existente = Dispositivo.objects.filter(
@ -2261,9 +2270,10 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
count_auto_insert = 0
if create_auto_inserts:
for perfil in perfil_parents:
tipos_dp_auto_insert = tipo.filhos_permitidos.filter(
filho_de_insercao_automatica=True,
perfil_id=context['perfil_pk'])
perfil=perfil)
for tipoauto in tipos_dp_auto_insert:
qtdp = tipoauto.quantidade_permitida
@ -2278,6 +2288,9 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
else:
count_auto_insert += 1
if count_auto_insert:
break
# Inserção automática
if count_auto_insert:

0
scripts/hooks/pre-commit

Loading…
Cancel
Save