From 31b4f4bfa54de9b317d902455fd5587151515ef2 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Mon, 18 Apr 2016 09:26:11 -0300 Subject: [PATCH] =?UTF-8?q?Refat=20dos=20tipos=20de=20pend=C3=AAncias=20e?= =?UTF-8?q?=20rend.=20dos=20vides?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- compilacao/forms.py | 9 +- compilacao/views.py | 211 +++++++++++++++------- static/styles/compilacao.scss | 24 +++ templates/compilacao/text_list_bloco.html | 8 +- templates/compilacao/text_pendencias.html | 5 +- 5 files changed, 186 insertions(+), 71 deletions(-) diff --git a/compilacao/forms.py b/compilacao/forms.py index ce8a1d49d..60e943bfe 100644 --- a/compilacao/forms.py +++ b/compilacao/forms.py @@ -7,6 +7,7 @@ from crispy_forms.layout import (HTML, Button, Column, Div, Field, Fieldset, Layout, Row) from django import forms from django.core.exceptions import NON_FIELD_ERRORS, ValidationError +from django.db.models import Q from django.forms.forms import Form from django.forms.models import ModelForm from django.template import defaultfilters @@ -732,12 +733,14 @@ class DispositivoEdicaoVigenciaForm(ModelForm): super(DispositivoEdicaoVigenciaForm, self).__init__(*args, **kwargs) pubs = Publicacao.objects.order_by( - '-data', '-hora').filter(ta=self.instance.ta) + '-data', '-hora').filter(Q(ta=self.instance.ta) | + Q(ta=self.instance.ta_publicado)) self.fields['publicacao'].choices = [("", "---------")] + [( - p.pk, _('%s realizada em %s') % ( + p.pk, _('%s realizada em %s. %s') % ( p.tipo_publicacao, defaultfilters.date( - p.data, "d \d\e F \d\e Y"))) for p in pubs] + p.data, "d \d\e F \d\e Y"), + str(p.ta))) for p in pubs] dvs = Dispositivo.objects.order_by('ordem').filter( pk=self.instance.dispositivo_vigencia_id) diff --git a/compilacao/views.py b/compilacao/views.py index 681a9ecb0..91162bc58 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -6,6 +6,7 @@ from braces.views import FormMessagesMixin from django import forms from django.contrib.auth.decorators import login_required from django.contrib.contenttypes.models import ContentType +from django.contrib.messages import constants from django.core.signing import Signer from django.core.urlresolvers import reverse_lazy from django.db import transaction @@ -2303,69 +2304,157 @@ class TextPendenciasView(ListView, CompMixin): ta_id=self.kwargs['ta_id'] ).select_related(*DISPOSITIVO_SELECT_RELATED) + p = [] + + def padd(r, type_pendencia, reverse_url=None, test=True, msg='', + kwargs=None, to_position=None): + + if not test: + return + + 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)) + + def success(r): + type_pendencia = 'success' + padd(r, type_pendencia, 'compilacao:dispositivo_edit_vigencia', + r.inconstitucionalidade, + _('Declarado Inconstitucional.')) + + padd(r, type_pendencia, '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_pendencia = 'info' + padd(r, type_pendencia, '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_pendencia, '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_pendencia, 'compilacao:dispositivo_edit', + r.rotulo != r.rotulo_padrao(local_insert=1), + _('Rótulo Diferente do Padrão')) + + padd(r, type_pendencia, '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_pendencia, '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_pendencia = 'warning' + padd(r, type_pendencia, '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_pendencia, '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_pendencia, '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_pendencia, '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_pendencia, 'compilacao:dispositivo_edit_vigencia', + not r.publicacao, + _('Dispositivo sem registro de publicação.')) + + padd(r, type_pendencia, '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_pendencia, 'compilacao:dispositivo_edit_vigencia', + not r.texto and r.tipo_dispositivo.dispositivo_de_articulacao, + _('Dispositivo está sem texto.')) + + padd(r, type_pendencia, '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_pendencia = 'danger' + padd(r, type_pendencia, 'compilacao:dispositivo_edit_vigencia', + not r.dispositivo_vigencia, + _('Dispositivo sem definição de Dispositivo de Vigência.')) + + padd(r, type_pendencia, '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_pendencia, '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_pendencia, '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_pendencia, 'compilacao:dispositivo_edit_alteracao', + r.dispositivo_substituido.tipo_dispositivo != + r.tipo_dispositivo, + _('Dispositivo está substituindo um Dispositivo ' + 'de outro tipo.')) + + padd(r, type_pendencia, 'compilacao:dispositivo_edit_alteracao', + r.dispositivo_substituido.ta != r.ta, + _('Dispositivo está substituindo um Dispositivo de outro ' + 'Texto Articulado.')) + for r in result: p = [] + r.contextual_class = "" + + # sucess + success(r) + info(r) + warning(r) + danger(r) - 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/styles/compilacao.scss b/static/styles/compilacao.scss index 5dcffd295..3e58ac721 100644 --- a/static/styles/compilacao.scss +++ b/static/styles/compilacao.scss @@ -1063,6 +1063,28 @@ a:link:after, a:visited:after { } } +.table-pendencias { + tbody { + tr { + td { + border-top: 1px solid white; + padding: 5px; + vertical-align: middle; + ul { + margin: 0px; + /*padding: 0px; + list-style: none;*/ + li { + &:hover { + background-color: rgba(0, 0, 0, 0.1) + } + } + } + } + } + } +} + .btn-modal-open { float: right; } @@ -1071,9 +1093,11 @@ a:link:after, a:visited:after { .class_color_container { background: #ddd !important; } + .clear { clear:both; } + .mce-panel { /*border: 0px solid #ccc !important;*/ } diff --git a/templates/compilacao/text_list_bloco.html b/templates/compilacao/text_list_bloco.html index 5ee5de08d..7ea48a8b8 100644 --- a/templates/compilacao/text_list_bloco.html +++ b/templates/compilacao/text_list_bloco.html @@ -72,9 +72,9 @@
Vide:
{% if vide.dispositivo_ref.dispositivo_pai.nivel != 0 and vide.dispositivo_ref.dispositivo_pai.tipo_dispositivo.dispositivo_de_articulacao %} - {{ vide.dispositivo_ref.dispositivo_pai}} + {{ vide.dispositivo_ref.dispositivo_pai}} - {{ vide.dispositivo_ref.dispositivo_pai.ta}} {% else %} - {{ vide.dispositivo_ref}} + {{ vide.dispositivo_ref}} - {{vide.dispositivo_ref.ta}} {% endif %} {% if vide.texto %} - {{vide.texto}}{% endif %}
@@ -100,9 +100,9 @@
Citado em:
{% if vide.dispositivo_base.dispositivo_pai.nivel != 0 and vide.dispositivo_base.dispositivo_pai.tipo_dispositivo.dispositivo_de_articulacao%} - {{ vide.dispositivo_base.dispositivo_pai}} + {{ vide.dispositivo_base.dispositivo_pai}} - {{ vide.dispositivo_base.dispositivo_pai.ta}} {% else %} - {{ vide.dispositivo_base}} + {{ vide.dispositivo_base}} - {{ vide.dispositivo_base.ta}} {% endif %} {% if vide.texto %} - {{vide.texto}}{% endif %}
diff --git a/templates/compilacao/text_pendencias.html b/templates/compilacao/text_pendencias.html index b5bf67992..ba59856d7 100644 --- a/templates/compilacao/text_pendencias.html +++ b/templates/compilacao/text_pendencias.html @@ -6,8 +6,7 @@ {% block head_content %}{{block.super}} {% endblock %} - - +
@@ -17,7 +16,7 @@ {% for dpt in object_list %} -
{% trans "Dispositivos" %}
+