Browse Source

Rft propagação e regras de dat vigências e eficácia

pull/1434/head
LeandroRoberto 7 years ago
parent
commit
7c89004ec3
  1. 56
      sapl/compilacao/forms.py
  2. 474
      sapl/compilacao/views.py
  3. 20
      sapl/static/styles/compilacao.scss
  4. 21
      sapl/templates/compilacao/layout/dispositivo_checkbox.html
  5. 2
      sapl/templates/compilacao/text_edit.html
  6. 11
      sapl/templates/compilacao/text_notificacoes.html
  7. 6
      sapl/templates/compilacao/textoarticulado_detail.html

56
sapl/compilacao/forms.py

@ -860,6 +860,21 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
('fim_vigencia', 3), ('fim_vigencia', 3),
('inicio_eficacia', 3), ('inicio_eficacia', 3),
('fim_eficacia', 3), ]) ('fim_eficacia', 3), ])
inst = kwargs['instance']
while inst.auto_inserido and inst.dispositivo_pai:
inst = inst.dispositivo_pai
if (inst.dispositivos_vigencias_set.exists()):
row_datas.fields.append(
Alert(
css_class='alert-info col-md-12',
content='<strong>%s</strong> %s' % (
_('Atenção!'),
_('O Dispositivo em edição define vigência de outros '
'dispositivos. Alterar as datas de vigência '
'alterará as datas de vigência dos dispositivos '
'vigêntes por este em edição.'))))
layout.append( layout.append(
Fieldset(_('Datas de Controle de Vigência'), Fieldset(_('Datas de Controle de Vigência'),
row_datas, row_datas,
@ -910,17 +925,26 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
super(DispositivoEdicaoVigenciaForm, self).save() super(DispositivoEdicaoVigenciaForm, self).save()
data = self.cleaned_data data = self.cleaned_data
instance = self.instance
inst = instance
extensao = 'extensao' in data and data['extensao'] == 'True' while instance.auto_inserido and instance.dispositivo_pai:
dp = instance.dispositivo_pai
dp.inicio_vigencia = instance.inicio_vigencia
dp.inicio_eficacia = instance.inicio_eficacia
dp.fim_vigencia = instance.fim_vigencia
dp.fim_eficacia = instance.fim_vigencia
dp.save()
if extensao: instance = dp
dv = data['dispositivo_vigencia']
if dv and dv.auto_inserido: dv = data['dispositivo_vigencia']
dv = dv.dispositivo_pai if dv and dv.auto_inserido:
dv = dv.dispositivo_pai
extensao = 'extensao' in data and data['extensao'] == 'True'
if extensao:
dv_pk = dv.pk if dv else None dv_pk = dv.pk if dv else None
instance = self.instance
def extenderPara(dpt_pk): def extenderPara(dpt_pk):
@ -937,6 +961,26 @@ class DispositivoEdicaoVigenciaForm(ModelForm):
extenderPara(instance.pk) extenderPara(instance.pk)
inst = instance
while instance.auto_inserido and instance.dispositivo_pai:
instance = instance.dispositivo_pai
inst.dispositivos_vigencias_set.filter(
ta_publicado__isnull=True).update(
inicio_vigencia=inst.inicio_vigencia,
inicio_eficacia=inst.inicio_eficacia,
fim_vigencia=inst.fim_vigencia,
fim_eficacia=inst.fim_eficacia)
inst.dispositivos_vigencias_set.filter(
ta_publicado__isnull=False).update(
inicio_vigencia=inst.inicio_eficacia,
inicio_eficacia=inst.inicio_eficacia,
fim_vigencia=inst.fim_eficacia,
fim_eficacia=inst.fim_eficacia)
return inst
class MultipleChoiceWithoutValidationField(forms.MultipleChoiceField): class MultipleChoiceWithoutValidationField(forms.MultipleChoiceField):

474
sapl/compilacao/views.py

@ -286,6 +286,204 @@ class CompMixin(PermissionRequiredMixin):
context['NO_ENTRIES_MSG'] = CrudListView.no_entries_msg context['NO_ENTRIES_MSG'] = CrudListView.no_entries_msg
return context return context
def get_notificacoes(self, object_list=None, type_notificacoes=None):
p = []
def padd(r, type_notificacao, reverse_url=None, test=True, msg='',
kwargs=None, to_position=None):
if not test:
return
r.contextual_class = type_notificacao
if not kwargs:
kwargs = {'ta_id': r.ta_id, 'pk': r.pk}
if reverse_url:
p.append((type_notificacao, msg,
reverse_lazy(reverse_url, kwargs=kwargs),
to_position))
else:
p.append((type_notificacao, msg, None, to_position))
def success(r):
type_notificacao = 'success'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.inconstitucionalidade,
_('Declarado Inconstitucional.'))
padd(r, type_notificacao, 'sapl.compilacao:ta_text_edit',
r.ta_publicado and r.dispositivo_atualizador,
_('Dispositivo alterado em %s' % r.ta_publicado),
{'ta_id': r.ta_publicado_id}, r.dispositivo_atualizador_id)
def info(r):
type_notificacao = 'info'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.publicacao and
r.dispositivo_vigencia and
r.publicacao.data != r.dispositivo_vigencia.inicio_vigencia,
_('Data da publicação associada ao Dispositivo difere da data'
' de inicio de vigência do Dispositivo de vigência.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.publicacao and r.publicacao.data != r.inicio_vigencia,
_('Data da publicação associada ao Dispositivo difere '
'da data de inicio de vigência.'))
padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit',
r.rotulo != r.rotulo_padrao(local_insert=1),
_('Rótulo Diferente do Padrão'))
padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit',
r.texto_atualizador and r.texto_atualizador != r.texto,
_('Texto do Dispositivo para o Documento '
'está diferente do texto para o Documento Alterador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.texto_atualizador and r.texto_atualizador == r.texto,
_('Texto do Dispositivo no Documento Alterador '
'está igual ao Texto no Documento Original. '
'Não é necessário manter armazenado o texto no Documento '
'Alterador.'))
def warning(r):
type_notificacao = 'warning'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.dispositivo_vigencia and r.inicio_vigencia !=
r.dispositivo_vigencia.inicio_vigencia,
_('Data de início de Vigência difere da data início de '
'Vigência do Dispositivo de Vigência'))
padd(r, type_notificacao, 'sapl.compilacao:ta_text',
r.inconstitucionalidade and not r.notas.exists(),
_('Dispositivo está definido como inconstitucional. É '
'aconcelhavel inserir uma Nota informando esta condição.'),
kwargs={'ta_id': r.ta_id},
to_position=r.pk)
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.inconstitucionalidade and not (
r.inicio_vigencia == r.fim_vigencia and
r.fim_vigencia == r.inicio_eficacia and
r.inicio_eficacia == r.fim_eficacia),
_('Dispositivo está definido como inconstitucional porém '
'existe diferença entre as datas início e fim de '
'vigência e eficácia.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.publicacao and
r.ta_publicado and r.ta_publicado != r.publicacao.ta,
_('A Publicação associada a este Dispositivo não é '
'uma publicação do Texto Articulado Alterador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
not r.publicacao,
_('Dispositivo sem registro de publicação.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.texto and r.tipo_dispositivo.dispositivo_de_articulacao,
_('Dispositivos de Articulação não '
'deveriam armazenar texto.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
not r.texto and
not r.tipo_dispositivo.dispositivo_de_articulacao,
_('Dispositivo está sem texto.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.texto_atualizador and not r.ta_publicado,
_('Existe Texto Atualizador, porém este Dispositivo não '
'está associado a nenhum Documento Atualizador.'))
def danger(r):
type_notificacao = 'danger'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
not r.dispositivo_vigencia,
_('Dispositivo sem definição de Dispositivo de Vigência.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.inconstitucionalidade and
r.inicio_vigencia != r.fim_vigencia,
_('Dispositivo está definido como inconstitucional porém '
'existe período de vigência.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.ta_publicado and not r.dispositivo_atualizador,
_('Dispositivo está associado a um Texto Articulado '
'Atualizador mas, a nenhum Dispositivo Atualizador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
not r.dispositivo_atualizador and
r.dispositivo_substituido,
_('Dispositivo está substituindo outro mas não foi informado '
'o Dispositivo Atualizador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_substituido and
r.dispositivo_substituido.tipo_dispositivo !=
r.tipo_dispositivo,
_('Dispositivo está substituindo um Dispositivo '
'de outro tipo.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_substituido and
r.dispositivo_substituido.ta != r.ta,
_('Dispositivo está substituindo um Dispositivo de outro '
'Texto Articulado.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_substituido and
r.dispositivo_substituido.dispositivo_subsequente != r,
_('Dispositivo está substituindo um Dispositivo que não '
'possui este como seu Dispositivo Subsequente.'))
padd(r,
type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_subsequente and
r.dispositivo_subsequente.dispositivo_substituido != r,
_('Dispositivo foi substituído por outro que não '
'possui este como seu Dispositivo Substituído.'))
rr = []
for r in object_list:
p = []
r.contextual_class = ""
for f in type_notificacoes:
if f != 'default':
locals()[f](r)
r.notificacoes = p
if p or 'default' in type_notificacoes:
rr.append(r)
if r.dispositivos_alterados_set.exists():
rr += self.get_notificacoes(
r.dispositivos_alterados_set.all(), type_notificacoes)
return rr
class TipoTaListView(CompMixin, ListView): class TipoTaListView(CompMixin, ListView):
model = TipoTextoArticulado model = TipoTextoArticulado
@ -963,6 +1161,23 @@ class TextEditView(CompMixin, TemplateView):
else: else:
if 'lock' in request.GET: if 'lock' in request.GET:
# TODO - implementar logging de ação de usuário # TODO - implementar logging de ação de usuário
notificacoes = self.get_notificacoes(
object_list=self.object.dispositivos_set.all(),
type_notificacoes=['danger', ])
if notificacoes:
messages.error(
request,
_('Existem erros a serem corrigidos que impedem a '
'publicação deste Texto Articulado. '
'Corrija os erros apontados nas notificações.'))
self.request.session[
'type_notificacoes'] = ['danger', ]
return redirect(to=reverse_lazy(
'sapl.compilacao:ta_text_notificacoes', kwargs={
'ta_id': self.object.id}))
self.object.editing_locked = True self.object.editing_locked = True
self.object.privacidade = STATUS_TA_PUBLIC self.object.privacidade = STATUS_TA_PUBLIC
self.object.save() self.object.save()
@ -1563,9 +1778,7 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
ordem__gt=base_ordem, ordem__gt=base_ordem,
nivel__lte=base.nivel).first() nivel__lte=base.nivel).first()
if not pbi: if pbi:
base.delete()
else:
dcc_a_excluir = Dispositivo.objects.order_by( dcc_a_excluir = Dispositivo.objects.order_by(
'ordem').filter( 'ordem').filter(
ta_id=base.ta_id, ta_id=base.ta_id,
@ -1604,10 +1817,16 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin):
dr.dispositivo0 - dr.dispositivo0 -
primeiro_a_religar + d.dispositivo0) primeiro_a_religar + d.dispositivo0)
dr.rotulo = dr.rotulo_padrao() dr.rotulo = dr.rotulo_padrao()
dr.save(clean=base != dr) dr.save(clean=base != dr)
if base.pk:
base.delete() if base.tipo_dispositivo.dispositivo_de_alteracao:
dpts = base.dispositivos_alterados_set.all().order_by(
'-ordem_bloco_atualizador')
for dpt in dpts:
self.remover_dispositivo(dpt, False)
if base.pk:
base.delete()
return '' return ''
@ -1951,19 +2170,6 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin):
else: else:
raise Exception('Não existe perfil padrão!') 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_irmao = None
dp_pai = None dp_pai = None
for dp in parents: for dp in parents:
@ -2369,27 +2575,6 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
data.update({'pk': bloco_alteracao.pk, data.update({'pk': bloco_alteracao.pk,
'pai': [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 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 colocar 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() history = dispositivo_a_alterar.history()
for d in history: for d in history:
@ -2434,8 +2619,13 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin,
ndp.dispositivo_de_revogacao = True ndp.dispositivo_de_revogacao = True
ndp.dispositivo_vigencia = bloco_alteracao.dispositivo_vigencia ndp.dispositivo_vigencia = bloco_alteracao.dispositivo_vigencia
ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia
ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_eficacia if ndp.dispositivo_vigencia:
ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia
ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_eficacia
else:
ndp.inicio_eficacia = bloco_alteracao.inicio_eficacia
ndp.inicio_vigencia = bloco_alteracao.inicio_eficacia
try: try:
ordem = dispositivo_a_alterar.criar_espaco( ordem = dispositivo_a_alterar.criar_espaco(
@ -3117,199 +3307,11 @@ class TextNotificacoesView(CompMixin, ListView, FormView):
ta_id=self.kwargs['ta_id'] ta_id=self.kwargs['ta_id']
).select_related(*DISPOSITIVO_SELECT_RELATED) ).select_related(*DISPOSITIVO_SELECT_RELATED)
p = [] type_notificacoes = []
if 'type_notificacoes' in self.request.session:
def padd(r, type_notificacao, reverse_url=None, test=True, msg='', type_notificacoes = self.request.session['type_notificacoes']
kwargs=None, to_position=None):
if not test:
return
r.contextual_class = type_notificacao
if not kwargs:
kwargs = {'ta_id': r.ta_id, 'pk': r.pk}
if reverse_url:
p.append((type_notificacao, msg,
reverse_lazy(reverse_url, kwargs=kwargs),
to_position))
else:
p.append((type_notificacao, msg, None, to_position))
def success(r):
type_notificacao = 'success'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.inconstitucionalidade,
_('Declarado Inconstitucional.'))
padd(r, type_notificacao, 'sapl.compilacao:ta_text_edit', if type_notificacoes and not isinstance(type_notificacoes, list):
r.ta_publicado and r.dispositivo_atualizador, type_notificacoes = [type_notificacoes, ]
_('Dispositivo alterado em %s' % r.ta_publicado),
{'ta_id': r.ta_publicado_id}, r.dispositivo_atualizador_id)
def info(r):
type_notificacao = 'info'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.publicacao and
r.dispositivo_vigencia and
r.publicacao.data != r.dispositivo_vigencia.inicio_vigencia,
_('Data da publicação associada ao Dispositivo difere da data'
' de inicio de vigência do Dispositivo de vigência.'))
padd(r, type_notificacao, return self.get_notificacoes(result, type_notificacoes)
'sapl.compilacao:dispositivo_edit_vigencia',
r.publicacao and r.publicacao.data != r.inicio_vigencia,
_('Data da publicação associada ao Dispositivo difere '
'da data de inicio de vigência.'))
padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit',
r.rotulo != r.rotulo_padrao(local_insert=1),
_('Rótulo Diferente do Padrão'))
padd(r, type_notificacao, 'sapl.compilacao:dispositivo_edit',
r.texto_atualizador and r.texto_atualizador != r.texto,
_('Texto do Dispositivo para o Documento '
'está diferente do texto para o Documento Alterador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.texto_atualizador and r.texto_atualizador == r.texto,
_('Texto do Dispositivo no Documento Alterador '
'está igual ao Texto no Documento Original. '
'Não é necessário manter armazenado o texto no Documento '
'Alterador.'))
def warning(r):
type_notificacao = 'warning'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.dispositivo_vigencia and r.inicio_vigencia !=
r.dispositivo_vigencia.inicio_vigencia,
_('Data de início de Vigência difere da data início de '
'Vigência do Dispositivo de Vigência'))
padd(r, type_notificacao, 'sapl.compilacao:ta_text',
r.inconstitucionalidade and not r.notas.exists(),
_('Dispositivo está definido como inconstitucional. É '
'aconcelhavel inserir uma Nota informando esta condição.'),
kwargs={'ta_id': r.ta_id},
to_position=r.pk)
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.inconstitucionalidade and not (
r.inicio_vigencia == r.fim_vigencia and
r.fim_vigencia == r.inicio_eficacia and
r.inicio_eficacia == r.fim_eficacia),
_('Dispositivo está definido como inconstitucional porém '
'existe diferença entre as datas início e fim de '
'vigência e eficácia.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.publicacao and
r.ta_publicado and r.ta_publicado != r.publicacao.ta,
_('A Publicação associada a este Dispositivo não é '
'uma publicação do Texto Articulado Alterador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
not r.publicacao,
_('Dispositivo sem registro de publicação.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.texto and r.tipo_dispositivo.dispositivo_de_articulacao,
_('Dispositivos de Articulação não '
'deveriam armazenar texto.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
not r.texto and
not r.tipo_dispositivo.dispositivo_de_articulacao,
_('Dispositivo está sem texto.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.texto_atualizador and not r.ta_publicado,
_('Existe Texto Atualizador, porém este Dispositivo não '
'está associado a nenhum Documento Atualizador.'))
def danger(r):
type_notificacao = 'danger'
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
not r.dispositivo_vigencia,
_('Dispositivo sem definição de Dispositivo de Vigência.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_vigencia',
r.inconstitucionalidade and
r.inicio_vigencia != r.fim_vigencia,
_('Dispositivo está definido como inconstitucional porém '
'existe período de vigência.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.ta_publicado and not r.dispositivo_atualizador,
_('Dispositivo está associado a um Texto Articulado '
'Atualizador mas, a nenhum Dispositivo Atualizador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
not r.dispositivo_atualizador and
r.dispositivo_substituido,
_('Dispositivo está substituindo outro mas não foi informado '
'o Dispositivo Atualizador.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_substituido and
r.dispositivo_substituido.tipo_dispositivo !=
r.tipo_dispositivo,
_('Dispositivo está substituindo um Dispositivo '
'de outro tipo.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_substituido and
r.dispositivo_substituido.ta != r.ta,
_('Dispositivo está substituindo um Dispositivo de outro '
'Texto Articulado.'))
padd(r, type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_substituido and
r.dispositivo_substituido.dispositivo_subsequente != r,
_('Dispositivo está substituindo um Dispositivo que não '
'possui este como seu Dispositivo Subsequente.'))
padd(r,
type_notificacao,
'sapl.compilacao:dispositivo_edit_alteracao',
r.dispositivo_subsequente and
r.dispositivo_subsequente.dispositivo_substituido != r,
_('Dispositivo foi substituído por outro que não '
'possui este como seu Dispositivo Substituído.'))
rr = []
for r in result:
p = []
r.contextual_class = ""
type_notificacoes = []
if 'type_notificacoes' in self.request.session:
type_notificacoes = self.request.session['type_notificacoes']
if isinstance(type_notificacoes, list):
for f in type_notificacoes:
if f != 'default':
locals()[f](r)
r.notificacoes = p
if p or 'default' in type_notificacoes:
rr.append(r)
return rr

20
sapl/static/styles/compilacao.scss

@ -165,7 +165,7 @@ a:link:after, a:visited:after {
.cp { .cp {
.desativado { .desativado {
.dtxt, .dtxt *, .dpt-link, .dpt-link * { .dtxt, .dtxt *, .dpt-link, .dpt-link * {
text-decoration: line-through; text-decoration: line-through;
color: #999 !important; color: #999 !important;
@ -1306,9 +1306,6 @@ a:link:after, a:visited:after {
border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0;
width: 100%; width: 100%;
span {
padding: 0.5em;
}
} }
&:last-child .itemlabel { &:last-child .itemlabel {
border-radius: 0 0 4px 0px; border-radius: 0 0 4px 0px;
@ -1338,16 +1335,11 @@ a:link:after, a:visited:after {
padding: 0.5em; padding: 0.5em;
vertical-align: middle; vertical-align: middle;
width: 100%; width: 100%;
label {
line-height: 1;
font-family: "SourceSansPro", Helvetica, Arial, sans-serif;
display: block;
margin: 0px;
}
.artigo { .artigo {
float: none; float: none;
} }
} }
} }
} }
.nomenclatura_heranca { .nomenclatura_heranca {
@ -1361,6 +1353,14 @@ a:link:after, a:visited:after {
border: 0px; border: 0px;
} }
} }
.label_vigencia {
border-top: 1px solid white;
display: inline-block;
color: #555;
span {
color: gray;
}
}
.cp-nav-parents { .cp-nav-parents {
& > .dropdown-menu { & > .dropdown-menu {
left: 0; left: 0;

21
sapl/templates/compilacao/layout/dispositivo_checkbox.html

@ -3,18 +3,18 @@
<div class="controls cp lista-dispositivo"{% if flat_attrs %} {{ flat_attrs|safe }}{% endif %}> <div class="controls cp lista-dispositivo"{% if flat_attrs %} {{ flat_attrs|safe }}{% endif %}>
{% include 'bootstrap/layout/field_errors_block.html' %} {% include 'bootstrap/layout/field_errors_block.html' %}
{% for choice in field.field.choices %} {% for choice in field.field.choices %}
{% ifchanged choice.1.ta%} {% ifchanged choice.1.ta%}
{% if not forloop.first %}</ul>{% endif %} {% if not forloop.first %}</ul>{% endif %}
<ul id="ta{{choice.1.ta.pk}}"> <ul id="ta{{choice.1.ta.pk}}">
<li class="ta_title"> <li class="ta_title">
<div class="iteminput"> <div class="itemlabel controls controls-radio-checkbox">
<input type="{{field.field.widget.attrs|lookup:"data-type-selection"}}" name="ta_select_all" id="ta_title{{choice.1.ta.pk}}" value="{{choice.1.ta.pk}}"/> <div class="checkbox">
</div> <label for="ta_title{{choice.1.ta.pk}}">
<div class="itemlabel"> <input type="{{field.field.widget.attrs|lookup:"data-type-selection"}}" name="ta_select_all" id="ta_title{{choice.1.ta.pk}}" value="{{choice.1.ta.pk}}"/>
<label for="ta_title{{choice.1.ta.pk}}">{{choice.1.ta}}</label> {{choice.1.ta}}
</label>
</div>
</div> </div>
</li> </li>
{% endifchanged %} {% endifchanged %}
@ -40,8 +40,15 @@
{{ choice.1.tipo_dispositivo.nota_automatica_sufixo_html|safe }} {{ choice.1.tipo_dispositivo.nota_automatica_sufixo_html|safe }}
</a> </a>
{% endif %} {% endif %}
</div> </div>
</div> </div>
<div class="label_vigencia">
{% if choice.1.inicio_vigencia %}{% trans "Início de Vigência:" %}<span> {{choice.1.inicio_vigencia|default:''}}.</span>{% endif %}
{% if choice.1.fim_vigencia %}{% trans "Fim de Vigência:" %}<span> {{choice.1.fim_vigencia|default:''}}.</span>{% endif %}<br>
{% if choice.1.inicio_eficacia %}{% trans "Início de Eficácia:" %}<span> {{choice.1.inicio_eficacia|default:''}}.</span>{% endif %}
{% if choice.1.fim_eficacia %}{% trans "Fim de Eficácia:" %}<span> {{choice.1.fim_eficacia|default:''}}.</span>{% endif %}
</div>
</div> </div>
</li> </li>

2
sapl/templates/compilacao/text_edit.html

@ -20,7 +20,7 @@
<div class="actions btn-toolbar pull-right" role="toolbar"> <div class="actions btn-toolbar pull-right" role="toolbar">
<div class="actions btn-group" role="group"> <div class="actions btn-group" role="group">
{% if perms.compilacao.lock_unlock_textoarticulado and not object.editable_only_by_owners%} {% if perms.compilacao.lock_unlock_textoarticulado and not object.editable_only_by_owners%}
<a href="{% url 'sapl.compilacao:ta_text_edit' object.pk %}?{% if object.editing_locked %}unlock{%else%}lock{% endif %}" class="btn btn-default btn-excluir">{% if object.editing_locked %}{% trans 'Desbloquear Edição' %}{%else%}{% trans 'Bloquear Edição' %}{% endif %}</a> <a href="{% url 'sapl.compilacao:ta_text_edit' object.pk %}?{% if object.editing_locked %}unlock{%else%}lock{% endif %}" class="btn btn-default {% if object.editing_locked %}btn-excluir{%else%}btn-primary{% endif %}">{% if object.editing_locked %}{% trans 'Desbloquear Edição' %}{%else%}{% trans 'Publicar Texto' %}{% endif %}</a>
{% endif %} {% endif %}
<a href="{% url 'sapl.compilacao:ta_edit' object.pk %}" class="btn btn-default">{% trans 'Editar Metadados do Texto Articulado' %}</a> <a href="{% url 'sapl.compilacao:ta_edit' object.pk %}" class="btn btn-default">{% trans 'Editar Metadados do Texto Articulado' %}</a>

11
sapl/templates/compilacao/text_notificacoes.html

@ -22,7 +22,7 @@
<td class="cp" width="63%" {% if not dpt.contextual_class %}colspan=2{% endif %} > <td class="cp" width="63%" {% if not dpt.contextual_class %}colspan=2{% endif %} >
<div class="dpt"> <div class="dpt">
<div class="{{ dpt.tipo_dispositivo.class_css }}"> <div class="{{ dpt.tipo_dispositivo.class_css }}">
<div class="dptt {% dispositivo_desativado dpt None None %}" id="dptt{{dpt.pk}}" > <div class="dptt {% dispositivo_desativado dpt None None %} {{dpt.dispositivo_atualizador.tipo_dispositivo.class_css}}" id="dptt{{dpt.pk}}" >
{{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }} {{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}
<a href="{% url 'sapl.compilacao:ta_text_edit' dpt.ta_id %}#{{dpt.pk}}">{% if dpt.rotulo or dpt.nivel = 1 %}{{ dpt.rotulo }}{%else%}[{{ dpt|nomenclatura}}{% if dpt.dispositivo_pai_id %} {% trans "de" %} {{ dpt.dispositivo_pai.rotulo }}{% endif %}] - {% endif %}</a> <a href="{% url 'sapl.compilacao:ta_text_edit' dpt.ta_id %}#{{dpt.pk}}">{% if dpt.rotulo or dpt.nivel = 1 %}{{ dpt.rotulo }}{%else%}[{{ dpt|nomenclatura}}{% if dpt.dispositivo_pai_id %} {% trans "de" %} {{ dpt.dispositivo_pai.rotulo }}{% endif %}] - {% endif %}</a>
{{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }} {{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}
@ -40,6 +40,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="clearfix"></div>
<div class="label_vigencia">
{% if dpt.inicio_vigencia %}{% trans "Início de Vigência:" %}<span> {{dpt.inicio_vigencia|default:''}}.</span>{% endif %}
{% if dpt.fim_vigencia %}{% trans "Fim de Vigência:" %}<span> {{dpt.fim_vigencia|default:''}}.</span>{% endif %}
{% if dpt.fim_vigencia or dpt.fim_eficacia%}<br>{% endif %}
{% if dpt.inicio_eficacia %}{% trans "Início de Eficácia:" %}<span> {{dpt.inicio_eficacia|default:''}}.</span>{% endif %}
{% if dpt.fim_eficacia %}{% trans "Fim de Eficácia:" %}<span> {{dpt.fim_eficacia|default:''}}.</span>{% endif %}
</div>
</td> </td>
{% if dpt.contextual_class %} {% if dpt.contextual_class %}
<td> <td>

6
sapl/templates/compilacao/textoarticulado_detail.html

@ -34,15 +34,15 @@
<div class="clearfix hidden-print"> <div class="clearfix hidden-print">
<div class="actions btn-group pull-right" role="group"> <div class="actions btn-group pull-right" role="group">
{% if perms.compilacao.lock_unlock_textoarticulado and not object.editable_only_by_owners%}
<a href="{% url 'sapl.compilacao:ta_text_edit' object.pk %}?{% if object.editing_locked %}unlock{%else%}lock{% endif %}" class="btn btn-default btn-excluir">{% if object.editing_locked %}{% trans 'Desbloquear Edição' %}{%else%}{% trans 'Bloquear Edição' %}{% endif %}</a>
{% endif %}
{% if perms.compilacao.change_textoarticulado and object|can_use_dynamic_editing:user %} {% if perms.compilacao.change_textoarticulado and object|can_use_dynamic_editing:user %}
<a href="{% url 'sapl.compilacao:ta_edit' object.pk %}" class="btn btn-default">{% trans 'Editar Metadados do Texto Articulado' %}</a> <a href="{% url 'sapl.compilacao:ta_edit' object.pk %}" class="btn btn-default">{% trans 'Editar Metadados do Texto Articulado' %}</a>
{% endif %} {% endif %}
{% if object|can_use_dynamic_editing:user %} {% if object|can_use_dynamic_editing:user %}
<a href="{% url 'sapl.compilacao:ta_text_edit' object.pk %}" class="btn btn-default">{% trans 'Editar Texto' %}</a> <a href="{% url 'sapl.compilacao:ta_text_edit' object.pk %}" class="btn btn-default">{% trans 'Editar Texto' %}</a>
{% endif %} {% endif %}
{% if perms.compilacao.lock_unlock_textoarticulado and not object.editable_only_by_owners%}
<a href="{% url 'sapl.compilacao:ta_text_edit' object.pk %}?{% if object.editing_locked %}unlock{%else%}lock{% endif %}" class="btn btn-default {% if object.editing_locked %}btn-excluir{%else%}btn-primary{% endif %}">{% if object.editing_locked %}{% trans 'Desbloquear Edição' %}{%else%}{% trans 'Publicar Texto' %}{% endif %}</a>
{% endif %}
</div> </div>
</div> </div>

Loading…
Cancel
Save