Browse Source

ajst config de datas de vigência na app compilação

pull/1425/head
LeandroRoberto 8 years ago
parent
commit
6b5077ccde
  1. 79
      sapl/compilacao/views.py
  2. 5
      sapl/static/styles/compilacao.scss

79
sapl/compilacao/views.py

@ -1881,27 +1881,30 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
try:
Dispositivo.objects.filter(
(Q(ta=dvt.ta) & Q(ta_publicado__isnull=True)) |
Q(ta_publicado=dvt.ta)
ta=dvt.ta, ta_publicado__isnull=True
).update(
dispositivo_vigencia=dvt,
inicio_vigencia=dvt.inicio_vigencia,
inicio_eficacia=dvt.inicio_eficacia)
dps = Dispositivo.objects.filter(dispositivo_vigencia_id=dvt.pk,
ta_publicado_id=dvt.ta_id)
with transaction.atomic():
for d in dps:
if d.dispositivo_substituido:
ds = d.dispositivo_substituido
ds.fim_vigencia = d.inicio_vigencia - timedelta(days=1)
ds.fim_eficacia = d.inicio_eficacia - timedelta(days=1)
d.save()
Dispositivo.objects.filter(ta_publicado=dvt.ta
).update(
dispositivo_vigencia=dvt,
inicio_vigencia=dvt.inicio_eficacia,
inicio_eficacia=dvt.inicio_eficacia)
if d.dispositivo_subsequente:
ds = d.dispositivo_subsequente
d.fim_vigencia = ds.inicio_vigencia - timedelta(days=1)
d.fim_eficacia = ds.inicio_eficacia - timedelta(days=1)
dps = Dispositivo.objects.filter(dispositivo_vigencia=dvt)
for d in dps:
if d.dispositivo_substituido:
ds = d.dispositivo_substituido
ds.fim_vigencia = d.inicio_vigencia - timedelta(days=1)
ds.fim_eficacia = d.inicio_eficacia - timedelta(days=1)
ds.save()
if d.dispositivo_subsequente:
ds = d.dispositivo_subsequente
d.fim_vigencia = ds.inicio_vigencia - timedelta(days=1)
d.fim_eficacia = ds.inicio_eficacia - timedelta(days=1)
d.save()
data = {'pk': dvt.pk,
@ -1948,6 +1951,19 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
else:
raise Exception('Não existe perfil padrão!')
if not base.dispositivo_vigencia and tipo.dispositivo_de_alteracao:
data = {'pk': base.pk,
'pai': [base.dispositivo_pai.pk, ]}
self.set_message(
data, 'danger',
_('Registros de Compilação só podem ser realizados '
'após a conclusão do lançamento deste '
'Texto Articulado.\nConclua o Lançamento, defina '
'o dispositivo de vigência e as datas de vigência e '
'eficácia. Só depois retorne '
'realizando Registros de Compilação.'), modal=True)
return data
dp_irmao = None
dp_pai = None
for dp in parents:
@ -2353,6 +2369,27 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
data.update({'pk': bloco_alteracao.pk,
'pai': [bloco_alteracao.pk, ]})
if not bloco_alteracao.dispositivo_vigencia:
"""
essa restrição não é necessária pois os lançamentos podem ser
aleatórios, desde que se no fim do lançamento, datas de vigência
e eficácia, bem como o dispositivo de vigência da norma seja
configurado. Como nos primeiros testes com usuários ficou
demonstrado o esquecimento/desconhecimento dessa tarefa,
principalmente em documentos que possuem datas de vigência e/ou
eficácia diferentes da data de publicação. Apesar de aparecer
na rotina de notificações, achei por bem colocr essa restrição.
"""
self.set_message(
data, 'danger',
_('Registros de Compilação só podem ser realizados '
'após a conclusão do lançamento deste '
'Texto Articulado.\r\nConclua o Lançamento, defina '
'o dispositivo de vigência e as datas de vigência e '
'eficácia. Só depois retorne '
'realizando Registros de Compilação.'), modal=True)
return data
history = dispositivo_a_alterar.history()
for d in history:
@ -2377,11 +2414,10 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
ndp = Dispositivo.new_instance_based_on(
dispositivo_a_alterar, dispositivo_a_alterar.tipo_dispositivo)
ndp.auto_inserido = dispositivo_a_alterar.auto_inserido
ndp.rotulo = dispositivo_a_alterar.rotulo
ndp.publicacao = bloco_alteracao.publicacao
if not revogacao:
ndp.texto = dispositivo_a_alterar.texto
else:
@ -2389,12 +2425,8 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
ndp.dispositivo_de_revogacao = True
ndp.dispositivo_vigencia = bloco_alteracao.dispositivo_vigencia
if ndp.dispositivo_vigencia:
ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia
ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_vigencia
else:
ndp.inicio_eficacia = bloco_alteracao.inicio_eficacia
ndp.inicio_vigencia = bloco_alteracao.inicio_vigencia
ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia
ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_eficacia
try:
ordem = dispositivo_a_alterar.criar_espaco(
@ -2420,6 +2452,7 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
dispositivos_do_bloco = \
bloco_alteracao.dispositivos_alterados_set.order_by(
'ordem_bloco_atualizador')
if dispositivos_do_bloco.exists():
ndp.ordem_bloco_atualizador = dispositivos_do_bloco.last(
).ordem_bloco_atualizador + Dispositivo.INTERVALO_ORDEM

5
sapl/static/styles/compilacao.scss

@ -1355,6 +1355,11 @@ a:link:after, a:visited:after {
display: inline;
}
}
.lista-dispositivo {
&.controls-radio-checkbox {
border: 0px;
}
}
.cp-nav-parents {
& > .dropdown-menu {
left: 0;

Loading…
Cancel
Save