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.db.models import Q |
|||
|
|||
from compilacao.models import Dispositivo |
|||
|
|||
|
|||
register = template.Library() |
|||
|
|||
|
|||
@register.filter |
|||
def get_bloco(pk): |
|||
def get_bloco(pk_atualizador): |
|||
return Dispositivo.objects.order_by('ordem_bloco_atualizador').filter( |
|||
Q(dispositivo_pai_id=pk) | |
|||
Q(dispositivo_atualizador=pk)).select_related() |
|||
Q(dispositivo_pai_id=pk_atualizador) | |
|||
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 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 = [ |
|||
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/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; |
|||
|
|||
} |
|||
|
|||
.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; |
|||
} |
|||
|
|||
background-color: rgba(100,100,100,0.3); |
|||
margin: 1em; |
|||
.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