diff --git a/compilacao/forms.py b/compilacao/forms.py index e98b5cc53..ce8a1d49d 100644 --- a/compilacao/forms.py +++ b/compilacao/forms.py @@ -559,7 +559,7 @@ class DispositivoEdicaoBasicaForm(ModelForm): self.helper = FormHelper() self.helper.layout = SaplFormLayout( *layout, - label_cancel=_('Retornar para o Editor Sequencial')) + label_cancel=_('Ir para o Editor Sequencial')) super(DispositivoEdicaoBasicaForm, self).__init__(*args, **kwargs) @@ -727,7 +727,7 @@ class DispositivoEdicaoVigenciaForm(ModelForm): self.helper = FormHelper() self.helper.layout = SaplFormLayout( *layout, - label_cancel=_('Retornar para o Editor Sequencial')) + label_cancel=_('Ir para o Editor Sequencial')) super(DispositivoEdicaoVigenciaForm, self).__init__(*args, **kwargs) @@ -816,7 +816,7 @@ class DispositivoDefinidorVigenciaForm(Form): self.helper = FormHelper() self.helper.layout = SaplFormLayout( *layout, - label_cancel=_('Retornar para o Editor Sequencial')) + label_cancel=_('Ir para o Editor Sequencial')) pk = kwargs.pop('pk') super(DispositivoDefinidorVigenciaForm, self).__init__(*args, **kwargs) @@ -955,7 +955,7 @@ class DispositivoEdicaoAlteracaoForm(ModelForm): self.helper = FormHelper() self.helper.layout = SaplFormLayout( *layout, - label_cancel=_('Retornar para o Editor Sequencial')) + label_cancel=_('Ir para o Editor Sequencial')) super(DispositivoEdicaoAlteracaoForm, self).__init__(*args, **kwargs) diff --git a/compilacao/urls.py b/compilacao/urls.py index 0a3c93222..4c8d0ed49 100644 --- a/compilacao/urls.py +++ b/compilacao/urls.py @@ -27,6 +27,9 @@ urlpatterns_compilacao = [ url(r'^(?P[0-9]+)/text/edit', views.TextEditView.as_view(), name='ta_text_edit'), + url(r'^(?P[0-9]+)/text/pendencias', + views.TextPendenciasView.as_view(), name='ta_text_pendencias'), + url(r'^(?P[0-9]+)/text/(?P[0-9]+)/$', views.DispositivoView.as_view(), name='dispositivo'), diff --git a/compilacao/views.py b/compilacao/views.py index 582c4ca70..681a9ecb0 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -1,6 +1,6 @@ -import sys from collections import OrderedDict from datetime import datetime, timedelta +import sys from braces.views import FormMessagesMixin from django import forms @@ -36,6 +36,7 @@ from compilacao.models import (Dispositivo, Nota, from compilacao.utils import DISPOSITIVO_SELECT_RELATED from crud.base import Crud, CrudListView, make_pagination + TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') @@ -2291,3 +2292,80 @@ class DispositivoEdicaoAlteracaoView(FormMessagesMixin, UpdateView): return self.form_invalid(form) else: return self.form_invalid(form) + + +class TextPendenciasView(ListView, CompMixin): + template_name = 'compilacao/text_pendencias.html' + + def get_queryset(self): + + result = Dispositivo.objects.filter( + ta_id=self.kwargs['ta_id'] + ).select_related(*DISPOSITIVO_SELECT_RELATED) + + for r in result: + p = [] + + def padd(type_pendencia, msg, + reverse_url=None, _kwargs=None, to_position=None): + r.contextual_class = type_pendencia + if not _kwargs: + _kwargs = {'ta_id': r.ta_id, 'pk': r.pk} + if reverse_url: + p.append((type_pendencia, msg, + reverse_lazy(reverse_url, kwargs=_kwargs), + to_position)) + else: + p.append((type_pendencia, msg, None, to_position)) + + # info + if r.rotulo != r.rotulo_padrao(local_insert=1): + padd('info', _('Rótulo Diferente do Padrão'), + 'compilacao:dispositivo_edit') + + if r.texto_atualizador and r.texto_atualizador != r.texto: + padd('info', _('Texto do Dispositivo para o Documento ' + 'está diferente do texto para o Documento ' + 'Alterador.'), + 'compilacao:dispositivo_edit') + + if r.inconstitucionalidade: + if not r.notas.exists(): + padd('info', _('Este Dispositivo está definido como ' + 'inconstitucional. É aconcelhavel inserir ' + 'uma Nota informando esta condição.'), + 'compilacao:ta_text', _kwargs={'ta_id': r.ta_id}, + to_position=r.pk) + + if not (r.inicio_vigencia == r.fim_vigencia and + r.fim_vigencia == r.inicio_eficacia and + r.inicio_eficacia == r.fim_eficacia): + padd('info', _('Este Dispositivo está definido como ' + 'inconstitucional porém existe ' + 'diferença entre as datas de vigência e ' + 'eficácia.'), + 'compilacao:dispositivo_edit_vigencia') + + # warnings + if r.dispositivo_vigencia and r.inicio_vigencia != \ + r.dispositivo_vigencia.inicio_vigencia: + padd('warning', + _('Data de início de Vigência diferente da ' + 'data início de Vigência do Dispositivo de Vigência'), + 'compilacao:dispositivo_edit_vigencia') + + if r.inconstitucionalidade: + if r.inicio_vigencia != r.fim_vigencia: + padd('warning', _('Este Dispositivo está definido como ' + 'inconstitucional porém existe ' + 'período de vigência!'), + 'compilacao:dispositivo_edit_vigencia') + + # dangers + + if not r.dispositivo_vigencia: + padd('danger', + _('Sem definição de Dispositivo de Vigência'), + 'compilacao:dispositivo_edit_vigencia') + r.pendencias = p + return result diff --git a/static/js/compilacao_edit.js b/static/js/compilacao_edit.js index 0193d712e..4368325d9 100644 --- a/static/js/compilacao_edit.js +++ b/static/js/compilacao_edit.js @@ -1,6 +1,5 @@ var editortype = "textarea"; -var gets = 0; var onSubmitEditForm = function(event) { var texto = ''; diff --git a/static/js/compilacao_notas.js b/static/js/compilacao_notas.js index 487cfb5ec..6171d80e4 100644 --- a/static/js/compilacao_notas.js +++ b/static/js/compilacao_notas.js @@ -123,20 +123,21 @@ function getForm(_this) { function onReadyNotasVides() { - $('.dne-nota').removeClass('dne-nota'); - $('.dne-form').html(''); + $('.dne-nota').removeClass('dne-nota'); + $('.dne-form').html(''); - $('.dne .btn-action').off(); - $('.dn .btn-action').off(); + $('.dne .btn-action').off(); + $('.dn .btn-action').off(); - $('.dne .btn-action, .dn .btn-action').not('.btn-nota-delete').not('.btn-vide-delete').click(function(){ - getForm(this); - }); + $('.dne .btn-action, .dn .btn-action').not('.btn-nota-delete').not('.btn-vide-delete').click(function(){ + getForm(this); + }); - $('.dn .btn-nota-delete, .dn .btn-vide-delete').click(function(){ - onDelete(this); - }); + $('.dn .btn-nota-delete, .dn .btn-vide-delete').click(function(){ + onDelete(this); + }); } + $(document).ready(function() { onReadyNotasVides() }); diff --git a/templates/compilacao/text_pendencias.html b/templates/compilacao/text_pendencias.html new file mode 100644 index 000000000..b5bf67992 --- /dev/null +++ b/templates/compilacao/text_pendencias.html @@ -0,0 +1,53 @@ +{% extends "base.html" %} +{% load i18n compilacao_filters common_tags sass_tags%} + +{% block base_content %} + + {% block head_content %}{{block.super}} + + {% endblock %} + + + + + + + + + + {% for dpt in object_list %} + + + {% if dpt.contextual_class %} + + {% endif %} + + {% endfor %} + +
{% trans "Dispositivos" %}{% trans "Pendências" %}
+
+
+
+ {{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }} + {% 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 %} + {{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }} + {{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{%if dpt.texto %}{{ dpt.texto|safe }}{%else%}{%if not dpt.tipo_dispositivo.dispositivo_de_articulacao %} {% endif %}{% endif %} +
+
+
+
+
    + {% for p in dpt.pendencias %} +
  • + {%if p.2 %} + {{p.1}} + {% else%} + {{p.1}} + {% endif %}
  • + {% endfor %} +
+
+{% endblock %}