mirror of https://github.com/interlegis/sapl.git
Browse Source
Portuguese in message: - primeira visualização de normas sem controle de vigências - visualização e lincagem das normas alteradoras - sem notas e videspull/6/head
LeandroRoberto
9 years ago
13 changed files with 405 additions and 56 deletions
@ -0,0 +1,34 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import models, migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('compilacao', '0003_auto_20150911_1735'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='dispositivo', |
||||
|
name='dispositivo_pai', |
||||
|
field=models.ForeignKey(to='compilacao.Dispositivo', verbose_name='Dispositivo Pai', blank=True, related_name='dispositivos_filhos_set', null=True, default=None), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='dispositivo', |
||||
|
name='norma', |
||||
|
field=models.ForeignKey(related_name='dispositivos_set', to='norma.NormaJuridica', verbose_name='Norma Jurídica'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='dispositivo', |
||||
|
name='norma_publicada', |
||||
|
field=models.ForeignKey(to='norma.NormaJuridica', verbose_name='Norma Jurídica Publicada', blank=True, related_name='dispositivos_alterados_pela_norma_set', null=True, default=None), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='dispositivo', |
||||
|
name='tipo_dispositivo', |
||||
|
field=models.ForeignKey(related_name='dispositivos_do_tipo_set', to='compilacao.TipoDispositivo', verbose_name='Tipo do Dispositivo'), |
||||
|
), |
||||
|
] |
@ -1,13 +1,58 @@ |
|||||
|
from builtins import ValueError |
||||
|
|
||||
from django import template |
from django import template |
||||
from django.db.models import Q |
from django.db.models import Q |
||||
|
|
||||
from compilacao.models import Dispositivo |
from compilacao.models import Dispositivo |
||||
|
|
||||
|
|
||||
register = template.Library() |
register = template.Library() |
||||
|
|
||||
|
|
||||
@register.filter |
@register.filter |
||||
def get_bloco(pk): |
def get_bloco(pk_atualizador): |
||||
return Dispositivo.objects.order_by('ordem_bloco_atualizador').filter( |
return Dispositivo.objects.order_by('ordem_bloco_atualizador').filter( |
||||
Q(dispositivo_pai_id=pk) | |
Q(dispositivo_pai_id=pk_atualizador) | |
||||
Q(dispositivo_atualizador=pk)).select_related() |
Q(dispositivo_atualizador_id=pk_atualizador)).select_related() |
||||
|
|
||||
|
|
||||
|
@register.filter |
||||
|
def bloco_ja_incluso(view, bloco): |
||||
|
try: |
||||
|
return view.itens_de_bloco.index(bloco) >= 0 |
||||
|
except ValueError: |
||||
|
return False |
||||
|
|
||||
|
|
||||
|
@register.simple_tag |
||||
|
def dispositivo_desativado(dispositivo): |
||||
|
if dispositivo.fim_vigencia is not None: |
||||
|
return 'desativado' |
||||
|
return '' |
||||
|
|
||||
|
|
||||
|
@register.simple_tag |
||||
|
def nota_automatica(dispositivo): |
||||
|
# return '' |
||||
|
if dispositivo.norma_publicada is not None and \ |
||||
|
dispositivo.tipo_dispositivo.class_css != 'artigo': |
||||
|
d = dispositivo.dispositivo_atualizador.dispositivo_pai |
||||
|
return 'Alteração feita pelo %s.' % d |
||||
|
return '' |
||||
|
|
||||
|
|
||||
|
@register.simple_tag |
||||
|
def set_nivel_old(view, value): |
||||
|
view.flag_nivel_old = value |
||||
|
return '' |
||||
|
|
||||
|
|
||||
|
@register.simple_tag |
||||
|
def append_to_itens_de_bloco(view, value): |
||||
|
view.itens_de_bloco.append(value) |
||||
|
return '' |
||||
|
|
||||
|
|
||||
|
@register.simple_tag |
||||
|
def close_div(value_max, value_min): |
||||
|
return '</div>' * (int(value_max) - int(value_min) + 1) |
||||
|
@ -1,8 +1,15 @@ |
|||||
from django.conf.urls import include, url |
from django.conf.urls import include, url |
||||
|
|
||||
from norma.views import assunto_norma_crud, tipo_norma_crud |
from norma.views import (assunto_norma_crud, tipo_norma_crud, |
||||
|
norma_temporario_para_compilacao_crud) |
||||
|
|
||||
|
norma_url_patterns = norma_temporario_para_compilacao_crud.urlpatterns |
||||
|
|
||||
urlpatterns = [ |
urlpatterns = [ |
||||
|
url(r'^norma/', include(norma_url_patterns, |
||||
|
norma_temporario_para_compilacao_crud.namespace, |
||||
|
norma_temporario_para_compilacao_crud.namespace)), |
||||
|
|
||||
url(r'^sistema/norma/tipo/', include(tipo_norma_crud.urls)), |
url(r'^sistema/norma/tipo/', include(tipo_norma_crud.urls)), |
||||
url(r'^sistema/norma/assunto/', include(assunto_norma_crud.urls)), |
url(r'^sistema/norma/assunto/', include(assunto_norma_crud.urls)), |
||||
] |
] |
||||
|
@ -1,7 +1,131 @@ |
|||||
|
|
||||
|
|
||||
.articulacao { |
.articulacao div { |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.dispositivo { |
||||
|
background-color: #ddd !important; |
||||
|
transition: all .4s ease-in-out; |
||||
|
display:inline; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.dispositivo .ementa { |
||||
|
padding: 2em 0em 3em 50%; |
||||
|
font-weight: bold; |
||||
|
|
||||
background-color: rgba(100,100,100,0.3); |
} |
||||
margin: 1em; |
|
||||
|
.dispositivo .anexo { |
||||
|
font-size: 1.4em; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
margin-top: 3em; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .parte { |
||||
|
font-size: 1.5em; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
margin-top: 2em; |
||||
|
} |
||||
|
.dispositivo .livro { |
||||
|
font-size: 1.5em; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
margin-top: 2em; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .titulo { |
||||
|
font-size: 1.5em; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
margin-top: 2em; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .capitulo { |
||||
|
margin-top: 1.5em; |
||||
|
font-size: 1.3em; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .secao { |
||||
|
margin-top: 0.8em; |
||||
|
font-size: 1.2em; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .subsecao, .dispositivo .itemsecao { |
||||
|
margin-top: 0.8em; |
||||
|
font-size: 1.2em; |
||||
|
text-align: center; |
||||
|
font-style: italic; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .artigo { |
||||
|
font-size: 1.15em; |
||||
|
float:left; |
||||
|
} |
||||
|
.dispositivo .caput { |
||||
|
font-size: 1.15em; |
||||
|
margin-bottom: 0.5em; |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .paragrafo { |
||||
|
margin-left: 1.5em; |
||||
|
font-size: 1.1em; |
||||
|
margin-top: 5px; |
||||
|
margin-bottom: 3px; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .inciso { |
||||
|
font-size: 1.1em; |
||||
|
margin-left: 2.5em; |
||||
|
margin-top: 5px; |
||||
|
margin-bottom: 3px; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .alinea { |
||||
|
font-size: 1.0em; |
||||
|
margin-left: 3.5em; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .item { |
||||
|
font-size: 1.0em; |
||||
|
margin-left: 4.5em; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .desativado, .dispositivo .desativado * { |
||||
|
text-decoration: line-through; |
||||
|
color: #777 !important; |
||||
|
} |
||||
|
.dispositivo .desativado table, .dispositivo .desativado table td { |
||||
|
border: 1px dotted #ccc; |
||||
|
text-decoration: line-through; |
||||
|
} |
||||
|
|
||||
|
.dispositivo a { |
||||
|
color: #444444 !important; |
||||
|
} |
||||
|
.dispositivo a.link_alterador { |
||||
|
color: #2980B9 !important; |
||||
|
font-size: 0.9rem; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.dispositivo .bloco_alteracao{ |
||||
|
margin-left: 5em; |
||||
|
} |
||||
|
|
||||
|
.dispositivo .bloco_alteracao, |
||||
|
.dispositivo .bloco_alteracao a, |
||||
|
.dispositivo .bloco_alteracao table, |
||||
|
.dispositivo .bloco_alteracao table td { |
||||
|
color: #018 !important; |
||||
} |
} |
@ -0,0 +1,18 @@ |
|||||
|
{% load compilacao_filters %} |
||||
|
|
||||
|
{% for ch in dispositivo.pk|get_bloco %} |
||||
|
|
||||
|
<div class="dispositivo" id="d{{ch.id}}"> |
||||
|
<div class="{{ ch.tipo_dispositivo.class_css }}" id="{{ch.id}}" nivel="{{ch.nivel}}"> |
||||
|
|
||||
|
{{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }} |
||||
|
<a name="ch.pk" href="{%url 'compilacao' ch.norma.pk %}#{{ch.pk}}"> |
||||
|
{{ ch.rotulo }} |
||||
|
</a> |
||||
|
{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }} |
||||
|
|
||||
|
{{ ch.tipo_dispositivo.texto_prefixo_html|safe }} |
||||
|
{{ ch.texto|safe }} |
||||
|
</div> |
||||
|
</div> |
||||
|
{% endfor %} |
@ -0,0 +1,42 @@ |
|||||
|
{% load i18n %} |
||||
|
{% load compilacao_filters %} |
||||
|
|
||||
|
|
||||
|
{% for dispositivo in view.get_queryset %} |
||||
|
{% if dispositivo.nivel == view.flag_nivel_old %} |
||||
|
</div> |
||||
|
{% elif dispositivo.nivel < view.flag_nivel_old %} |
||||
|
{% close_div view.flag_nivel_old dispositivo.nivel %} |
||||
|
{% endif%} |
||||
|
<div class="dispositivo" id="d{{dispositivo.id}}"> |
||||
|
{% spaceless %} |
||||
|
<div class="{% dispositivo_desativado dispositivo %} {{ dispositivo.tipo_dispositivo.class_css }}" id="id{{dispositivo.id}}"> |
||||
|
|
||||
|
{{ dispositivo.tipo_dispositivo.rotulo_prefixo_html|safe }} |
||||
|
<a name="{{dispositivo.pk}}" >{{ dispositivo.rotulo }}</a> |
||||
|
{{ dispositivo.tipo_dispositivo.rotulo_sufixo_html|safe }} |
||||
|
|
||||
|
{{ dispositivo.tipo_dispositivo.texto_prefixo_html|safe }} |
||||
|
{{ dispositivo.texto|safe }} |
||||
|
|
||||
|
{% if dispositivo.norma_publicada_id != None %} |
||||
|
|
||||
|
<a class="link_alterador" href="{%url 'compilacao' dispositivo.norma_publicada.pk %}#{{dispositivo.dispositivo_atualizador_idexit |
||||
|
}}"> |
||||
|
{{ dispositivo.tipo_dispositivo.nota_automatica_prefixo_html|safe }} |
||||
|
{% nota_automatica dispositivo %} |
||||
|
{{ dispositivo.tipo_dispositivo.nota_automatica_sufixo_html|safe }} |
||||
|
</a> |
||||
|
{% endif%} |
||||
|
{% if view.is_norma_alteradora and dispositivo.tipo_dispositivo.class_css == 'bloco_alteracao'%} |
||||
|
|
||||
|
{%with node=dispositivo template_name='compilacao/bloco_alteracao.html' %} |
||||
|
{%include template_name%} |
||||
|
{%endwith%} |
||||
|
{% endif%} |
||||
|
</div> |
||||
|
{% endspaceless %} |
||||
|
|
||||
|
{% set_nivel_old view dispositivo.nivel %} |
||||
|
{% endfor %} |
||||
|
{% close_div view.flag_nivel_old view.flag_nivel_ini %} |
@ -0,0 +1,9 @@ |
|||||
|
{% extends "crud/detail.html" %} |
||||
|
{% load i18n %} |
||||
|
|
||||
|
{% block sections_nav %} |
||||
|
<dl class="sub-nav left"> |
||||
|
<dd><a href="{% url 'normajuridica:detail' object.pk %}" class="button secondary">{% trans 'Início' %}</a></dd> |
||||
|
<dd><a href="{% url 'compilacao' object.pk %}" class="button secondary">{% trans 'Texto Integral' %}</a></dd> |
||||
|
</dl> |
||||
|
{% endblock sections_nav %} |
Loading…
Reference in new issue