mirror of https://github.com/interlegis/sapl.git
Edward Ribeiro
9 years ago
33 changed files with 1456 additions and 7 deletions
@ -0,0 +1,3 @@ |
|||
from sapl.utils import register_all_models_in_admin |
|||
|
|||
register_all_models_in_admin(__name__) |
@ -0,0 +1,7 @@ |
|||
from django.apps import AppConfig |
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
|
|||
class CompilacaoAppConfig(AppConfig): |
|||
name = 'compilacao' |
|||
verbose_name = _('Compilação') |
@ -0,0 +1,27 @@ |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (1, 'Articulação', 'articulacao', '', '', 0, '.....', '', '', '', '', '', '', True, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (2, 'Ementa', 'ementa', '', '', 0, '.....', '', '', '', '', '', '', False, 'N', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (3, 'Bloco Alteração', 'bloco_alteracao', '', '', 0, '.....', '', '', '', '', '', '', True, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (4, 'Omissis', 'omissis', '', '', 0, '.....', '', '', '', '', '', '', False, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (11, 'Anexo', 'anexo', '', 'Anexo', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (12, 'Parte', 'parte', '', 'Parte', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (13, 'Livro', 'livro', '', 'Livro', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (14, 'Título', 'titulo', '', 'Título', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (15, 'Capítulo', 'capitulo', '', 'Capítulo', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (16, 'Seção', 'secao', '', 'Seção', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (17, 'SubSeção', 'subsecao', '', 'SubSeção', 0, '-----', '', '<br>', '', '<br>', '', '', False, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (18, 'Item de Seção', 'itemsecao', '', 'Item', 0, '-----', '', '<br>', '', '<br>', '', '', False, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (19, 'Artigo', 'artigo', '', 'Art.', 9, '-----', '', ' – ', '', '', '', '', True, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (20, 'Caput', 'caput', '', '', 0, '', '', '', '', '', '', '', False, 'N', 'N', 'N', 'N', 'N', 'N'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (21, 'Parágrafo', 'paragrafo', '', '§;Parágrafo Único', 9, '-----', '', ' – ', '', '', '', '', False, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (22, 'Inciso', 'inciso', '', '', 0, '.....', '', ' – ', '', '', '', '', False, 'I', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (23, 'Alinea', 'alinea', '', '', 0, '.....', '', ' – ', '', '', '', '', False, 'a', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (24, 'Item', 'item', '', '', 0, '.....', '', ' – ', '', '', '', '', False, '1', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (25, 'Disposições Preliminares', 'disp_preliminares', '', 'Disposições Preliminares', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (26, 'Disposições Gerais', 'disp_gerais', '', 'Disposições Gerais', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (27, 'Disposições Transitórias', 'disp_transitorias', '', 'Disposições Transitórias', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (28, 'Disposições Finais', 'disp_finais', '', 'Disposições Finais', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'); |
|||
insert INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, rotulo_separadores_variacao, rotulo_sufixo_texto, rotulo_sufixo_html, texto_prefixo_html, texto_sufixo_html, nota_automatica_prefixo_html, nota_automatica_sufixo_html, contagem_continua, formato_variacao0, formato_variacao1, formato_variacao2, formato_variacao3, formato_variacao4, formato_variacao5) VALUES (29, 'Texto Não Estruturado', 'texto_n_estruturado', '', '', 0, '.....', '', '', '', '', '', '',False, '1', '1', '1', '1', '1', '1'); |
|||
|
|||
|
|||
|
|||
select setval('compilacao_tipodispositivo_id_seq'::regclass, (select max(id) from compilacao_tipodispositivo)); |
@ -0,0 +1,207 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import models, migrations |
|||
from django.conf import settings |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
|||
('norma', '0003_auto_20150906_0239'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='Dispositivo', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('ordem', models.PositiveIntegerField(verbose_name='Ordem de Renderização', default=0)), |
|||
('ordem_bloco_atualizador', models.PositiveIntegerField(verbose_name='Ordem de Renderização no Bloco Atualizador', default=0)), |
|||
('nivel', models.PositiveIntegerField(blank=True, null=True, verbose_name='Nível Estrutural', default=0)), |
|||
('dispositivo0', models.PositiveIntegerField(verbose_name='Número do Dispositivo', default=0)), |
|||
('dispositivo1', models.PositiveIntegerField(blank=True, null=True, verbose_name='Primeiro Nível de Variação', default=0)), |
|||
('dispositivo2', models.PositiveIntegerField(blank=True, null=True, verbose_name='Segundo Nível de Variação', default=0)), |
|||
('dispositivo3', models.PositiveIntegerField(blank=True, null=True, verbose_name='Terceiro Nível de Variação', default=0)), |
|||
('dispositivo4', models.PositiveIntegerField(blank=True, null=True, verbose_name='Quarto Nível de Variação', default=0)), |
|||
('dispositivo5', models.PositiveIntegerField(blank=True, null=True, verbose_name='Quinto Nível de Variação', default=0)), |
|||
('rotulo', models.CharField(blank=True, max_length=50, verbose_name='Rótulo', default='')), |
|||
('texto', models.TextField(blank=True, verbose_name='Texto', default='')), |
|||
('texto_atualizador', models.TextField(blank=True, verbose_name='Texto no Dispositivo Atualizador', default='')), |
|||
('inicio_vigencia', models.DateField(verbose_name='Início de Vigência')), |
|||
('fim_vigencia', models.DateField(blank=True, null=True, verbose_name='Fim de Vigência')), |
|||
('inicio_eficacia', models.DateField(verbose_name='Início de Eficácia')), |
|||
('fim_eficacia', models.DateField(blank=True, null=True, verbose_name='Fim de Eficácia')), |
|||
('inconstitucionalidade', models.BooleanField(verbose_name='Inconstitucionalidade', default=False, choices=[(True, 'Sim'), (False, 'Não')])), |
|||
('visibilidade', models.BooleanField(verbose_name='Visibilidade na Norma Publicada', default=False, choices=[(True, 'Sim'), (False, 'Não')])), |
|||
('timestamp', models.DateTimeField()), |
|||
('dispositivo_atualizador', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Atualizador', default=None, related_name='dispositivo_dispositivo_atualizador')), |
|||
('dispositivo_pai', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Pai', default=None, related_name='dispositivo_dispositivo_pai')), |
|||
('dispositivo_subsequente', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Subsequente', default=None, related_name='dispositivo_dispositivo_subsequente')), |
|||
('dispositivo_substituido', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Substituido', default=None, related_name='dispositivo_dispositivo_substituido')), |
|||
('dispositivo_vigencia', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo de Vigência', default=None, related_name='dispositivo_dispositivo_vigencia')), |
|||
('norma', models.ForeignKey(to='norma.NormaJuridica', verbose_name='Norma Jurídica')), |
|||
('norma_publicada', models.ForeignKey(blank=True, null=True, to='norma.NormaJuridica', verbose_name='Norma Jurídica Publicada', default=None, related_name='dispositivo_norma_publicada')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Dispositivo', |
|||
'verbose_name_plural': 'Dispositivos', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Nota', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('texto', models.TextField(verbose_name='Texto da Nota')), |
|||
('url_externa', models.CharField(blank=True, max_length=1024, verbose_name='Url externa')), |
|||
('data_criacao', models.DateTimeField(verbose_name='Data de Criação')), |
|||
('publicacao', models.DateTimeField(verbose_name='Data de Publicação')), |
|||
('efetifidade', models.DateTimeField(verbose_name='Data de Efeito')), |
|||
('publicidade', models.PositiveSmallIntegerField(verbose_name='Nível de Publicidade', choices=[(1, 'Nota Privada'), (2, 'Nota Setorial'), (3, 'Nota Institucional'), (4, 'Nota Pública')])), |
|||
('dispositivo', models.ForeignKey(to='compilacao.Dispositivo', verbose_name='Dispositivo da Nota')), |
|||
('owner', models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Dono da Nota')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Nota', |
|||
'verbose_name_plural': 'Notas', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Publicacao', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('publicacao', models.DateTimeField(verbose_name='Data de Publicação')), |
|||
('pagina_inicio', models.PositiveIntegerField(blank=True, null=True, verbose_name='Pg. Início')), |
|||
('pagina_fim', models.PositiveIntegerField(blank=True, null=True, verbose_name='Pg. Fim')), |
|||
('timestamp', models.DateTimeField()), |
|||
('norma', models.ForeignKey(to='norma.NormaJuridica', verbose_name='Norma Jurídica')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Publicação', |
|||
'verbose_name_plural': 'Publicações', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='TipoDispositivo', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('nome', models.CharField(max_length=50, verbose_name='Nome', unique=True)), |
|||
('class_css', models.CharField(max_length=20, verbose_name='Classe CSS')), |
|||
('rotulo_prefixo_html', models.CharField(blank=True, max_length=100, verbose_name='Prefixo html do rótulo')), |
|||
('rotulo_prefixo_texto', models.CharField(blank=True, max_length=30, verbose_name='Prefixo de construção do rótulo')), |
|||
('rotulo_ordinal', models.IntegerField(verbose_name='Tipo de número do rótulo')), |
|||
('rotulo_separadores_variacao', models.CharField(blank=True, max_length=5, verbose_name='Separadores das Variações')), |
|||
('rotulo_sufixo_texto', models.CharField(blank=True, max_length=30, verbose_name='Sufixo de construção do rótulo')), |
|||
('rotulo_sufixo_html', models.CharField(blank=True, max_length=100, verbose_name='Sufixo html do rótulo')), |
|||
('texto_prefixo_html', models.CharField(blank=True, max_length=100, verbose_name='Prefixo html do texto')), |
|||
('texto_sufixo_html', models.CharField(blank=True, max_length=100, verbose_name='Sufixo html do texto')), |
|||
('nota_automatica_prefixo_html', models.CharField(blank=True, max_length=100, verbose_name='Prefixo html da nota automática')), |
|||
('nota_automatica_sufixo_html', models.CharField(blank=True, max_length=100, verbose_name='Sufixo html da nota automática')), |
|||
('contagem_continua', models.BooleanField(verbose_name='Contagem contínua', choices=[(True, 'Sim'), (False, 'Não')])), |
|||
('formato_variacao0', models.CharField(max_length=1, verbose_name='Formato da Numeração', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])), |
|||
('formato_variacao1', models.CharField(max_length=1, verbose_name='Formato da Variação 1', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])), |
|||
('formato_variacao2', models.CharField(max_length=1, verbose_name='Formato da Variação 2', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])), |
|||
('formato_variacao3', models.CharField(max_length=1, verbose_name='Formato da Variação 3', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])), |
|||
('formato_variacao4', models.CharField(max_length=1, verbose_name='Formato da Variação 4', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])), |
|||
('formato_variacao5', models.CharField(max_length=1, verbose_name='Formato da Variação 5', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Tipo de Dispositivo', |
|||
'verbose_name_plural': 'Tipos de Dispositivo', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='TipoNota', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)), |
|||
('nome', models.CharField(max_length=50, verbose_name='Nome')), |
|||
('modelo', models.TextField(blank=True, verbose_name='Modelo')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Tipo de Nota', |
|||
'verbose_name_plural': 'Tipos de Nota', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='TipoPublicacao', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)), |
|||
('nome', models.CharField(max_length=50, verbose_name='Nome')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Tipo de Publicação', |
|||
'verbose_name_plural': 'Tipos de Publicação', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='TipoVide', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)), |
|||
('nome', models.CharField(max_length=50, verbose_name='Nome')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Tipo de Vide', |
|||
'verbose_name_plural': 'Tipos de Vide', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='VeiculoPublicacao', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)), |
|||
('nome', models.CharField(max_length=60, verbose_name='Nome')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Veículo de Publicação', |
|||
'verbose_name_plural': 'Veículos de Publicação', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Vide', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('data_criacao', models.DateTimeField(verbose_name='Data de Criação')), |
|||
('texto', models.TextField(verbose_name='Texto do Vide')), |
|||
('dispositivo_base', models.ForeignKey(to='compilacao.Dispositivo', verbose_name='Dispositivo Base', related_name='vide_dispositivo_base')), |
|||
('dispositivo_ref', models.ForeignKey(to='compilacao.Dispositivo', verbose_name='Dispositivo Referido', related_name='vide_dispositivo_ref')), |
|||
('tipo', models.ForeignKey(to='compilacao.TipoVide', verbose_name='Tipo do Vide')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Vide', |
|||
'verbose_name_plural': 'Vides', |
|||
}, |
|||
), |
|||
migrations.AddField( |
|||
model_name='publicacao', |
|||
name='tipo_publicacao', |
|||
field=models.ForeignKey(to='compilacao.TipoPublicacao', verbose_name='Tipo de Publicação'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='publicacao', |
|||
name='veiculo_publicacao', |
|||
field=models.ForeignKey(to='compilacao.VeiculoPublicacao', verbose_name='Veículo de Publicação'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='nota', |
|||
name='tipo', |
|||
field=models.ForeignKey(to='compilacao.TipoNota', verbose_name='Tipo da Nota'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='dispositivo', |
|||
name='publicacao', |
|||
field=models.ForeignKey(blank=True, null=True, to='compilacao.Publicacao', verbose_name='Publicação', default=None), |
|||
), |
|||
migrations.AddField( |
|||
model_name='dispositivo', |
|||
name='tipo_dispositivo', |
|||
field=models.ForeignKey(to='compilacao.TipoDispositivo', verbose_name='Tipo do Dispositivo'), |
|||
), |
|||
migrations.AlterUniqueTogether( |
|||
name='dispositivo', |
|||
unique_together=set([('norma', 'dispositivo0', 'dispositivo1', 'dispositivo2', 'dispositivo3', 'dispositivo4', 'dispositivo5', 'tipo_dispositivo', 'dispositivo_pai', 'publicacao'), ('norma', 'ordem')]), |
|||
), |
|||
] |
@ -0,0 +1,48 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import models, migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('compilacao', '0001_initial'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='dispositivo', |
|||
options={'ordering': ['norma', 'ordem'], 'verbose_name_plural': 'Dispositivos', 'verbose_name': 'Dispositivo'}, |
|||
), |
|||
migrations.AlterField( |
|||
model_name='dispositivo', |
|||
name='dispositivo_atualizador', |
|||
field=models.ForeignKey(related_name='dispositivos_alterados_set', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Atualizador', default=None, blank=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='dispositivo', |
|||
name='dispositivo_pai', |
|||
field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Pai', default=None, blank=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='dispositivo', |
|||
name='dispositivo_subsequente', |
|||
field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Subsequente', default=None, blank=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='dispositivo', |
|||
name='dispositivo_substituido', |
|||
field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Substituido', default=None, blank=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='dispositivo', |
|||
name='dispositivo_vigencia', |
|||
field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo de Vigência', default=None, blank=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='dispositivo', |
|||
name='norma_publicada', |
|||
field=models.ForeignKey(related_name='dispositivos_alterados_set', to='norma.NormaJuridica', null=True, verbose_name='Norma Jurídica Publicada', default=None, blank=True), |
|||
), |
|||
] |
@ -0,0 +1,19 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import models, migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('compilacao', '0002_auto_20150907_2334'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='dispositivo', |
|||
name='dispositivo_pai', |
|||
field=models.ForeignKey(blank=True, null=True, verbose_name='Dispositivo Pai', to='compilacao.Dispositivo', related_name='filhos', default=None), |
|||
), |
|||
] |
@ -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'), |
|||
), |
|||
] |
@ -0,0 +1,402 @@ |
|||
from django.contrib.auth.models import User |
|||
from django.db import models |
|||
from django.utils.translation import ugettext_lazy as _ |
|||
|
|||
from norma.models import NormaJuridica |
|||
from sapl.utils import YES_NO_CHOICES |
|||
|
|||
|
|||
class TipoNota(models.Model): |
|||
sigla = models.CharField( |
|||
max_length=10, unique=True, verbose_name=_('Sigla')) |
|||
nome = models.CharField(max_length=50, verbose_name=_('Nome')) |
|||
modelo = models.TextField( |
|||
blank=True, verbose_name=_('Modelo')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Tipo de Nota') |
|||
verbose_name_plural = _('Tipos de Nota') |
|||
|
|||
def __str__(self): |
|||
return '%s: %s' % (self.sigla, self.nome) |
|||
|
|||
|
|||
class TipoVide(models.Model): |
|||
sigla = models.CharField( |
|||
max_length=10, unique=True, verbose_name=_('Sigla')) |
|||
nome = models.CharField(max_length=50, verbose_name=_('Nome')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Tipo de Vide') |
|||
verbose_name_plural = _('Tipos de Vide') |
|||
|
|||
def __str__(self): |
|||
return '%s: %s' % (self.sigla, self.nome) |
|||
|
|||
|
|||
class TipoDispositivo(models.Model): |
|||
FNC1 = '1' |
|||
FNCI = 'I' |
|||
FNCi = 'i' |
|||
FNCA = 'A' |
|||
FNCa = 'a' |
|||
FNC8 = '*' |
|||
FNCN = 'N' |
|||
FORMATO_NUMERACAO_CHOICES = ( |
|||
(FNC1, _('(1) Numérico')), |
|||
(FNCI, _('(I) Romano Maiúsculo')), |
|||
(FNCi, _('(i) Romano Minúsculo')), |
|||
(FNCA, _('(A) Alfabético Maiúsculo')), |
|||
(FNCa, _('(a) Alfabético Minúsculo')), |
|||
(FNC8, _('Tópico - Sem contagem')), |
|||
(FNCN, _('Sem renderização')), |
|||
) |
|||
|
|||
nome = models.CharField( |
|||
max_length=50, unique=True, verbose_name=_('Nome')) |
|||
class_css = models.CharField( |
|||
max_length=20, |
|||
verbose_name=_('Classe CSS')) |
|||
rotulo_prefixo_html = models.CharField( |
|||
blank=True, |
|||
max_length=100, |
|||
verbose_name=_('Prefixo html do rótulo')) |
|||
rotulo_prefixo_texto = models.CharField( |
|||
blank=True, |
|||
max_length=30, |
|||
verbose_name=_('Prefixo de construção do rótulo')) |
|||
rotulo_ordinal = models.IntegerField( |
|||
verbose_name=_('Tipo de número do rótulo')) |
|||
rotulo_separadores_variacao = models.CharField( |
|||
blank=True, |
|||
max_length=5, |
|||
verbose_name=_('Separadores das Variações')) |
|||
rotulo_sufixo_texto = models.CharField( |
|||
blank=True, |
|||
max_length=30, |
|||
verbose_name=_('Sufixo de construção do rótulo')) |
|||
rotulo_sufixo_html = models.CharField( |
|||
blank=True, |
|||
max_length=100, |
|||
verbose_name=_('Sufixo html do rótulo')) |
|||
texto_prefixo_html = models.CharField( |
|||
blank=True, |
|||
max_length=100, |
|||
verbose_name=_('Prefixo html do texto')) |
|||
texto_sufixo_html = models.CharField( |
|||
blank=True, |
|||
max_length=100, |
|||
verbose_name=_('Sufixo html do texto')) |
|||
nota_automatica_prefixo_html = models.CharField( |
|||
blank=True, |
|||
max_length=100, |
|||
verbose_name=_('Prefixo html da nota automática')) |
|||
nota_automatica_sufixo_html = models.CharField( |
|||
blank=True, |
|||
max_length=100, |
|||
verbose_name=_('Sufixo html da nota automática')) |
|||
contagem_continua = models.BooleanField( |
|||
choices=YES_NO_CHOICES, verbose_name=_('Contagem contínua')) |
|||
formato_variacao0 = models.CharField( |
|||
max_length=1, |
|||
choices=FORMATO_NUMERACAO_CHOICES, |
|||
default=FNC1, |
|||
verbose_name=_('Formato da Numeração')) |
|||
formato_variacao1 = models.CharField( |
|||
max_length=1, |
|||
choices=FORMATO_NUMERACAO_CHOICES, |
|||
default=FNC1, |
|||
verbose_name=_('Formato da Variação 1')) |
|||
formato_variacao2 = models.CharField( |
|||
max_length=1, |
|||
choices=FORMATO_NUMERACAO_CHOICES, |
|||
default=FNC1, |
|||
verbose_name=_('Formato da Variação 2')) |
|||
formato_variacao3 = models.CharField( |
|||
max_length=1, |
|||
choices=FORMATO_NUMERACAO_CHOICES, |
|||
default=FNC1, |
|||
verbose_name=_('Formato da Variação 3')) |
|||
formato_variacao4 = models.CharField( |
|||
max_length=1, |
|||
choices=FORMATO_NUMERACAO_CHOICES, |
|||
default=FNC1, |
|||
verbose_name=_('Formato da Variação 4')) |
|||
formato_variacao5 = models.CharField( |
|||
max_length=1, |
|||
choices=FORMATO_NUMERACAO_CHOICES, |
|||
default=FNC1, |
|||
verbose_name=_('Formato da Variação 5')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Tipo de Dispositivo') |
|||
verbose_name_plural = _('Tipos de Dispositivo') |
|||
|
|||
def __str__(self): |
|||
return self.nome |
|||
|
|||
|
|||
class TipoPublicacao(models.Model): |
|||
sigla = models.CharField( |
|||
max_length=10, unique=True, verbose_name=_('Sigla')) |
|||
nome = models.CharField(max_length=50, verbose_name=_('Nome')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Tipo de Publicação') |
|||
verbose_name_plural = _('Tipos de Publicação') |
|||
|
|||
def __str__(self): |
|||
return self.sigla + ' - ' + self.nome |
|||
|
|||
|
|||
class VeiculoPublicacao(models.Model): |
|||
sigla = models.CharField( |
|||
max_length=10, unique=True, verbose_name=_('Sigla')) |
|||
nome = models.CharField(max_length=60, verbose_name=_('Nome')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Veículo de Publicação') |
|||
verbose_name_plural = _('Veículos de Publicação') |
|||
|
|||
def __str__(self): |
|||
return '%s: %s' % (self.sigla, self.nome) |
|||
|
|||
|
|||
class Publicacao(models.Model): |
|||
norma = models.ForeignKey( |
|||
NormaJuridica, verbose_name=_('Norma Jurídica')) |
|||
veiculo_publicacao = models.ForeignKey( |
|||
VeiculoPublicacao, verbose_name=_('Veículo de Publicação')) |
|||
tipo_publicacao = models.ForeignKey( |
|||
TipoPublicacao, verbose_name=_('Tipo de Publicação')) |
|||
publicacao = models.DateTimeField(verbose_name=_('Data de Publicação')) |
|||
pagina_inicio = models.PositiveIntegerField( |
|||
blank=True, null=True, verbose_name=_('Pg. Início')) |
|||
pagina_fim = models.PositiveIntegerField( |
|||
blank=True, null=True, verbose_name=_('Pg. Fim')) |
|||
timestamp = models.DateTimeField() |
|||
|
|||
class Meta: |
|||
verbose_name = _('Publicação') |
|||
verbose_name_plural = _('Publicações') |
|||
|
|||
def __str__(self): |
|||
return '%s: %s' % (self.veiculo_publicacao, self.publicacao) |
|||
|
|||
|
|||
class Dispositivo(models.Model): |
|||
TEXTO_PADRAO_DISPOSITIVO_REVOGADO = _('(Revogado)') |
|||
ordem = models.PositiveIntegerField( |
|||
default=0, |
|||
verbose_name=_('Ordem de Renderização')) |
|||
ordem_bloco_atualizador = models.PositiveIntegerField( |
|||
default=0, |
|||
verbose_name=_('Ordem de Renderização no Bloco Atualizador')) |
|||
nivel = models.PositiveIntegerField( |
|||
default=0, |
|||
blank=True, |
|||
null=True, |
|||
verbose_name=_('Nível Estrutural')) |
|||
|
|||
dispositivo0 = models.PositiveIntegerField( |
|||
default=0, |
|||
verbose_name=_('Número do Dispositivo')) |
|||
dispositivo1 = models.PositiveIntegerField( |
|||
default=0, |
|||
blank=True, |
|||
null=True, |
|||
verbose_name=_('Primeiro Nível de Variação')) |
|||
dispositivo2 = models.PositiveIntegerField( |
|||
default=0, |
|||
blank=True, |
|||
null=True, |
|||
verbose_name=_('Segundo Nível de Variação')) |
|||
dispositivo3 = models.PositiveIntegerField( |
|||
default=0, |
|||
blank=True, |
|||
null=True, |
|||
verbose_name=_('Terceiro Nível de Variação')) |
|||
dispositivo4 = models.PositiveIntegerField( |
|||
default=0, |
|||
blank=True, |
|||
null=True, |
|||
verbose_name=_('Quarto Nível de Variação')) |
|||
dispositivo5 = models.PositiveIntegerField( |
|||
default=0, |
|||
blank=True, |
|||
null=True, |
|||
verbose_name=_('Quinto Nível de Variação')) |
|||
|
|||
rotulo = models.CharField( |
|||
max_length=50, |
|||
blank=True, |
|||
default='', |
|||
verbose_name=_('Rótulo')) |
|||
texto = models.TextField( |
|||
blank=True, |
|||
default='', |
|||
verbose_name=_('Texto')) |
|||
texto_atualizador = models.TextField( |
|||
blank=True, |
|||
default='', |
|||
verbose_name=_('Texto no Dispositivo Atualizador')) |
|||
|
|||
inicio_vigencia = models.DateField( |
|||
verbose_name=_('Início de Vigência')) |
|||
fim_vigencia = models.DateField( |
|||
blank=True, null=True, verbose_name=_('Fim de Vigência')) |
|||
|
|||
inicio_eficacia = models.DateField( |
|||
verbose_name=_('Início de Eficácia')) |
|||
fim_eficacia = models.DateField( |
|||
blank=True, null=True, verbose_name=_('Fim de Eficácia')) |
|||
|
|||
inconstitucionalidade = models.BooleanField( |
|||
default=False, |
|||
choices=YES_NO_CHOICES, |
|||
verbose_name=_('Inconstitucionalidade')) |
|||
# Relevant attribute only in altering norms |
|||
visibilidade = models.BooleanField( |
|||
default=False, |
|||
choices=YES_NO_CHOICES, |
|||
verbose_name=_('Visibilidade na Norma Publicada')) |
|||
|
|||
timestamp = models.DateTimeField() |
|||
|
|||
tipo_dispositivo = models.ForeignKey( |
|||
TipoDispositivo, |
|||
related_name='dispositivos_do_tipo_set', |
|||
verbose_name=_('Tipo do Dispositivo')) |
|||
|
|||
publicacao = models.ForeignKey( |
|||
Publicacao, |
|||
blank=True, null=True, default=None, verbose_name=_('Publicação')) |
|||
|
|||
norma = models.ForeignKey( |
|||
NormaJuridica, |
|||
related_name='dispositivos_set', |
|||
verbose_name=_('Norma Jurídica')) |
|||
norma_publicada = models.ForeignKey( |
|||
NormaJuridica, |
|||
blank=True, null=True, default=None, |
|||
related_name='dispositivos_alterados_pela_norma_set', |
|||
verbose_name=_('Norma Jurídica Publicada')) |
|||
|
|||
dispositivo_subsequente = models.ForeignKey( |
|||
'self', |
|||
blank=True, null=True, default=None, |
|||
related_name='+', |
|||
verbose_name=_('Dispositivo Subsequente')) |
|||
dispositivo_substituido = models.ForeignKey( |
|||
'self', |
|||
blank=True, null=True, default=None, |
|||
related_name='+', |
|||
verbose_name=_('Dispositivo Substituido')) |
|||
dispositivo_pai = models.ForeignKey( |
|||
'self', |
|||
blank=True, null=True, default=None, |
|||
related_name='dispositivos_filhos_set', |
|||
verbose_name=_('Dispositivo Pai')) |
|||
dispositivo_vigencia = models.ForeignKey( |
|||
'self', |
|||
blank=True, null=True, default=None, |
|||
related_name='+', |
|||
verbose_name=_('Dispositivo de Vigência')) |
|||
dispositivo_atualizador = models.ForeignKey( |
|||
'self', |
|||
blank=True, null=True, default=None, |
|||
related_name='dispositivos_alterados_set', |
|||
verbose_name=_('Dispositivo Atualizador')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Dispositivo') |
|||
verbose_name_plural = _('Dispositivos') |
|||
ordering = ['norma', 'ordem'] |
|||
unique_together = ( |
|||
('norma', 'ordem',), |
|||
('norma', |
|||
'dispositivo0', |
|||
'dispositivo1', |
|||
'dispositivo2', |
|||
'dispositivo3', |
|||
'dispositivo4', |
|||
'dispositivo5', |
|||
'tipo_dispositivo', |
|||
'dispositivo_pai', |
|||
'publicacao',), |
|||
) |
|||
|
|||
def __str__(self): |
|||
return '%(rotulo)s - %(norma)s' % { |
|||
'rotulo': (self.rotulo if self.rotulo else self.tipo_dispositivo), |
|||
'norma': self.norma} |
|||
|
|||
|
|||
class Vide(models.Model): |
|||
data_criacao = models.DateTimeField(verbose_name=_('Data de Criação')) |
|||
texto = models.TextField(verbose_name=_('Texto do Vide')) |
|||
|
|||
tipo = models.ForeignKey(TipoVide, verbose_name=_('Tipo do Vide')) |
|||
|
|||
dispositivo_base = models.ForeignKey( |
|||
Dispositivo, |
|||
verbose_name=_('Dispositivo Base'), |
|||
related_name='%(class)s_dispositivo_base') |
|||
dispositivo_ref = models.ForeignKey( |
|||
Dispositivo, |
|||
related_name='%(class)s_dispositivo_ref', |
|||
verbose_name=_('Dispositivo Referido')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Vide') |
|||
verbose_name_plural = _('Vides') |
|||
|
|||
def __str__(self): |
|||
return _('Vide %s') % self.texto |
|||
|
|||
|
|||
class Nota(models.Model): |
|||
NPRIV = 1 |
|||
NSTRL = 2 |
|||
NINST = 3 |
|||
NPUBL = 4 |
|||
PUBLICIDADE_CHOICES = ( |
|||
# Only the owner of the note has visibility. |
|||
(NPRIV, _('Nota Privada')), |
|||
# All of the same group have visibility. |
|||
(NSTRL, _('Nota Setorial')), |
|||
# All authenticated users have visibility. |
|||
(NINST, _('Nota Institucional')), |
|||
# All users have visibility. |
|||
(NPUBL, _('Nota Pública')), |
|||
) |
|||
|
|||
texto = models.TextField(verbose_name=_('Texto da Nota')) |
|||
url_externa = models.CharField( |
|||
max_length=1024, |
|||
blank=True, |
|||
verbose_name=_('Url externa')) |
|||
|
|||
data_criacao = models.DateTimeField(verbose_name=_('Data de Criação')) |
|||
publicacao = models.DateTimeField(verbose_name=_('Data de Publicação')) |
|||
efetifidade = models.DateTimeField(verbose_name=_('Data de Efeito')) |
|||
|
|||
tipo = models.ForeignKey(TipoNota, verbose_name=_('Tipo da Nota')) |
|||
dispositivo = models.ForeignKey( |
|||
Dispositivo, |
|||
verbose_name=_('Dispositivo da Nota')) |
|||
|
|||
owner = models.ForeignKey(User, verbose_name=_('Dono da Nota')) |
|||
publicidade = models.PositiveSmallIntegerField( |
|||
choices=PUBLICIDADE_CHOICES, |
|||
verbose_name=_('Nível de Publicidade')) |
|||
|
|||
class Meta: |
|||
verbose_name = _('Nota') |
|||
verbose_name_plural = _('Notas') |
|||
|
|||
def __str__(self): |
|||
return '%s: %s' % ( |
|||
self.tipo, |
|||
self.PUBLICIDADE_CHOICES[self.publicidade][1] |
|||
) |
@ -0,0 +1,64 @@ |
|||
from django import template |
|||
from django.core.signing import Signer |
|||
from django.db.models import Q |
|||
|
|||
from compilacao.models import Dispositivo |
|||
|
|||
|
|||
register = template.Library() |
|||
|
|||
|
|||
@register.filter |
|||
def get_bloco(pk_atualizador): |
|||
return Dispositivo.objects.order_by('ordem_bloco_atualizador').filter( |
|||
Q(dispositivo_pai_id=pk_atualizador) | |
|||
Q(dispositivo_atualizador_id=pk_atualizador)).select_related() |
|||
|
|||
|
|||
@register.filter |
|||
def get_field(value, key): |
|||
return value[key] |
|||
|
|||
|
|||
@register.simple_tag |
|||
def dispositivo_desativado(dispositivo, inicio_vigencia, fim_vigencia): |
|||
if inicio_vigencia and fim_vigencia: |
|||
if dispositivo.fim_vigencia is None: |
|||
return '' |
|||
elif dispositivo.fim_vigencia >= fim_vigencia: |
|||
return '' |
|||
return 'desativado' |
|||
else: |
|||
if dispositivo.fim_vigencia is not None: |
|||
return 'desativado' |
|||
return '' |
|||
|
|||
|
|||
@register.simple_tag |
|||
def nota_automatica(dispositivo): |
|||
if dispositivo.norma_publicada is not None and \ |
|||
dispositivo.tipo_dispositivo.class_css != 'artigo': |
|||
d = dispositivo.dispositivo_atualizador.dispositivo_pai |
|||
if dispositivo.texto == Dispositivo.TEXTO_PADRAO_DISPOSITIVO_REVOGADO: |
|||
return 'Revogado pelo %s.' % d |
|||
else: |
|||
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 close_div(value_max, value_min): |
|||
return '</div>' * (int(value_max) - int(value_min) + 1) |
|||
|
|||
|
|||
@register.filter |
|||
def get_sign_vigencia(value): |
|||
string = "%s,%s" % (value.inicio_vigencia, value.fim_vigencia) |
|||
signer = Signer() |
|||
return signer.sign(str(string)) |
@ -0,0 +1,16 @@ |
|||
from django.conf.urls import url |
|||
|
|||
from compilacao import views |
|||
|
|||
urlpatterns = [ |
|||
url(r'^norma/(?P<norma_id>[0-9]+)/compilacao/$', |
|||
views.CompilacaoView.as_view(), name='compilacao'), |
|||
|
|||
|
|||
|
|||
url(r'^norma/(?P<norma_id>[0-9]+)/compilacao/vigencia/(?P<sign>.+)/$', |
|||
views.CompilacaoView.as_view(), name='vigencia'), |
|||
|
|||
url(r'^norma/(?P<norma_id>[0-9]+)/compilacao/(?P<dispositivo_id>[0-9]+)/$', |
|||
views.DispositivoView.as_view(), name='dispositivo'), |
|||
] |
@ -0,0 +1,164 @@ |
|||
from collections import OrderedDict |
|||
from datetime import timedelta |
|||
|
|||
from django.core.signing import Signer |
|||
from django.utils.dateparse import parse_date |
|||
from django.views.generic.list import ListView |
|||
|
|||
from compilacao.models import Dispositivo |
|||
from norma.models import NormaJuridica |
|||
|
|||
DISPOSITIVO_SELECT_RELATED = ( |
|||
'tipo_dispositivo', |
|||
'norma_publicada', |
|||
'norma', |
|||
'dispositivo_atualizador', |
|||
'dispositivo_atualizador__dispositivo_pai', |
|||
'dispositivo_atualizador__dispositivo_pai__norma', |
|||
'dispositivo_atualizador__dispositivo_pai__norma__tipo', |
|||
'dispositivo_pai') |
|||
|
|||
|
|||
class CompilacaoView(ListView): |
|||
template_name = 'compilacao/index.html' |
|||
|
|||
flag_alteradora = -1 |
|||
|
|||
flag_nivel_ini = 0 |
|||
flag_nivel_old = -1 |
|||
|
|||
itens_de_vigencia = {} |
|||
|
|||
inicio_vigencia = None |
|||
fim_vigencia = None |
|||
|
|||
def get_queryset(self): |
|||
self.flag_alteradora = -1 |
|||
self.flag_nivel_ini = 0 |
|||
self.flag_nivel_old = -1 |
|||
|
|||
self.inicio_vigencia = None |
|||
self.fim_vigencia = None |
|||
if 'sign' in self.kwargs: |
|||
signer = Signer() |
|||
try: |
|||
string = signer.unsign(self.kwargs['sign']).split(',') |
|||
self.inicio_vigencia = parse_date(string[0]) |
|||
self.fim_vigencia = parse_date(string[1]) |
|||
except: |
|||
return{} |
|||
|
|||
return Dispositivo.objects.filter( |
|||
inicio_vigencia__lte=self.fim_vigencia, |
|||
ordem__gt=0, |
|||
norma_id=self.kwargs['norma_id'], |
|||
).select_related(*DISPOSITIVO_SELECT_RELATED) |
|||
else: |
|||
return Dispositivo.objects.filter( |
|||
ordem__gt=0, |
|||
norma_id=self.kwargs['norma_id'] |
|||
).select_related(*DISPOSITIVO_SELECT_RELATED) |
|||
|
|||
def get_vigencias(self): |
|||
itens = Dispositivo.objects.filter( |
|||
norma_id=self.kwargs['norma_id'], |
|||
).order_by( |
|||
'inicio_vigencia' |
|||
).distinct( |
|||
'inicio_vigencia' |
|||
).select_related( |
|||
'norma_publicada', |
|||
'norma', |
|||
'norma_publicada__tipo', |
|||
'norma__tipo',) |
|||
|
|||
ajuste_datas_vigencia = [] |
|||
|
|||
for item in itens: |
|||
ajuste_datas_vigencia.append(item) |
|||
|
|||
lenLista = len(ajuste_datas_vigencia) |
|||
for i in range(lenLista): |
|||
if i + 1 < lenLista: |
|||
ajuste_datas_vigencia[ |
|||
i].fim_vigencia = ajuste_datas_vigencia[ |
|||
i + 1].inicio_vigencia - timedelta(days=1) |
|||
else: |
|||
ajuste_datas_vigencia[i].fim_vigencia = None |
|||
|
|||
self.itens_de_vigencia = {} |
|||
|
|||
idx = -1 |
|||
length = len(ajuste_datas_vigencia) |
|||
for item in ajuste_datas_vigencia: |
|||
idx += 1 |
|||
if idx == 0: |
|||
self.itens_de_vigencia[0] = [item, ] |
|||
continue |
|||
|
|||
if idx + 1 < length: |
|||
ano = item.norma_publicada.ano |
|||
if ano in self.itens_de_vigencia: |
|||
self.itens_de_vigencia[ano].append(item) |
|||
else: |
|||
self.itens_de_vigencia[ano] = [item, ] |
|||
else: |
|||
self.itens_de_vigencia[9999] = [item, ] |
|||
|
|||
if len(self.itens_de_vigencia.keys()) <= 1: |
|||
return {} |
|||
|
|||
self.itens_de_vigencia = OrderedDict( |
|||
sorted(self.itens_de_vigencia.items(), key=lambda t: t[0])) |
|||
|
|||
return self.itens_de_vigencia |
|||
|
|||
def get_norma(self): |
|||
return NormaJuridica.objects.select_related('tipo').get( |
|||
pk=self.kwargs['norma_id']) |
|||
|
|||
def is_norma_alteradora(self): |
|||
if self.flag_alteradora == -1: |
|||
self.flag_alteradora = Dispositivo.objects.select_related( |
|||
'dispositivos_alterados_pela_norma_set' |
|||
).filter(norma_id=self.kwargs['norma_id']).count() |
|||
return self.flag_alteradora > 0 |
|||
|
|||
|
|||
class DispositivoView(CompilacaoView): |
|||
# template_name = 'compilacao/index.html' |
|||
template_name = 'compilacao/template_render_bloco.html' |
|||
|
|||
def get_queryset(self): |
|||
self.flag_alteradora = -1 |
|||
self.flag_nivel_ini = 0 |
|||
self.flag_nivel_old = -1 |
|||
|
|||
try: |
|||
bloco = Dispositivo.objects.get(pk=self.kwargs['dispositivo_id']) |
|||
except Dispositivo.DoesNotExist: |
|||
return [] |
|||
|
|||
self.flag_nivel_old = bloco.nivel - 1 |
|||
self.flag_nivel_ini = bloco.nivel |
|||
|
|||
proximo_bloco = Dispositivo.objects.filter( |
|||
ordem__gt=bloco.ordem, |
|||
nivel__lte=bloco.nivel, |
|||
norma_publicada=None, |
|||
norma_id=self.kwargs['norma_id'])[:1] |
|||
|
|||
if proximo_bloco.count() == 0: |
|||
itens = Dispositivo.objects.filter( |
|||
ordem__gte=bloco.ordem, |
|||
norma_publicada=None, |
|||
norma_id=self.kwargs['norma_id'] |
|||
).select_related(*DISPOSITIVO_SELECT_RELATED) |
|||
else: |
|||
itens = Dispositivo.objects.filter( |
|||
ordem__gte=bloco.ordem, |
|||
ordem__lt=proximo_bloco[0].ordem, |
|||
norma_publicada=None, |
|||
norma_id=self.kwargs['norma_id'] |
|||
).select_related(*DISPOSITIVO_SELECT_RELATED) |
|||
return itens |
@ -0,0 +1,18 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import models, migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('materia', '0004_materialegislativa_texto_original'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterUniqueTogether( |
|||
name='materialegislativa', |
|||
unique_together=set([('tipo', 'numero', 'ano')]), |
|||
), |
|||
] |
@ -0,0 +1,35 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import models, migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('norma', '0002_auto_20150729_1717'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='AssuntoNormaRelationship', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)), |
|||
('assunto', models.ForeignKey(to='norma.AssuntoNorma')), |
|||
], |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='normajuridica', |
|||
name='assunto', |
|||
), |
|||
migrations.AddField( |
|||
model_name='assuntonormarelationship', |
|||
name='norma', |
|||
field=models.ForeignKey(to='norma.NormaJuridica'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='normajuridica', |
|||
name='assuntos', |
|||
field=models.ManyToManyField(to='norma.AssuntoNorma', through='norma.AssuntoNormaRelationship'), |
|||
), |
|||
] |
@ -0,0 +1,18 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import models, migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('norma', '0003_auto_20150906_0239'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterUniqueTogether( |
|||
name='assuntonormarelationship', |
|||
unique_together=set([('assunto', 'norma')]), |
|||
), |
|||
] |
@ -0,0 +1,18 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import models, migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('norma', '0004_auto_20150907_0004'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='normajuridica', |
|||
options={'verbose_name_plural': 'Normas Jurídicas', 'verbose_name': 'Norma Jurídica', 'ordering': ['-data']}, |
|||
), |
|||
] |
@ -1,8 +1,16 @@ |
|||
from django.conf.urls import include, url |
|||
|
|||
from norma.views import assunto_norma_crud, tipo_norma_crud |
|||
from norma.views import (assunto_norma_crud, |
|||
norma_temporario_para_compilacao_crud, |
|||
tipo_norma_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)), |
|||
] |
|||
|
@ -0,0 +1,178 @@ |
|||
|
|||
|
|||
.articulacao div { |
|||
background-color: #fff; |
|||
} |
|||
|
|||
|
|||
.dispositivo { |
|||
background-color: #ddd !important; |
|||
transition: all .4s ease-in-out; |
|||
display:inline; |
|||
} |
|||
|
|||
|
|||
.dispositivo .ementa { |
|||
padding: 4em 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; |
|||
font-style: italic; |
|||
} |
|||
|
|||
.dispositivo .bloco_alteracao:hover a { |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
.dispositivo .bloco_alteracao, |
|||
.dispositivo .bloco_alteracao a, |
|||
.dispositivo .bloco_alteracao table, |
|||
.dispositivo .bloco_alteracao table td { |
|||
color: #018 !important; |
|||
} |
|||
|
|||
.compilacao .top-bar-section li:not(.has-form) a:not(.button), |
|||
.compilacao .top-bar { |
|||
line-height: 1.6rem; |
|||
height: auto; |
|||
background: #2980B9; |
|||
z-index:1; |
|||
margin: 0 auto; |
|||
max-width: 62.5rem; |
|||
} |
|||
|
|||
.compilacao .top-bar-section li:not(.has-form) a:not(.button).selected, |
|||
.compilacao .top-bar-section li:not(.has-form) a:not(.button):hover { |
|||
background: #1056A0; |
|||
} |
|||
|
|||
.compilacao .top-bar-section li:not(.has-form) a:not(.button) { |
|||
padding: 0 0.43333rem; |
|||
} |
|||
|
|||
.compilacao ul.nav { |
|||
background: #2980B9; |
|||
display:block; |
|||
width: 100%; |
|||
z-index:1; |
|||
} |
|||
.compilacao .tipo-vigencias { |
|||
border-top: 1px solid #62B5B5; |
|||
} |
|||
|
|||
.compilacao .vigencias { |
|||
margin: 2.5em 0 0 0; |
|||
transition: all .4s ease-in-out; |
|||
background: #2980B9; |
|||
} |
|||
|
|||
.compilacao .fixed{ |
|||
z-index:98; |
|||
} |
|||
|
|||
.displaynone { |
|||
display: none !important; |
|||
} |
@ -0,0 +1,10 @@ |
|||
{% load compilacao_filters %} |
|||
{% for ch in dispositivo.pk|get_bloco %} |
|||
{% spaceless %} |
|||
<div class="dispositivo" id="d{{ch.id}}"> |
|||
<div class="{{ ch.tipo_dispositivo.class_css }}" id="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> |
|||
{% endspaceless %} |
|||
{% endfor %} |
@ -0,0 +1,101 @@ |
|||
{% extends "base.html" %} |
|||
{% load i18n %} |
|||
{% load compilacao_filters %} |
|||
|
|||
{% block title%} |
|||
<h1>{{ view.get_norma }}</h1> |
|||
{% endblock %} |
|||
|
|||
{% block base_content %} |
|||
|
|||
<script type="text/javascript"> |
|||
|
|||
$( window ).scroll(function() { |
|||
|
|||
if (window.pageYOffset <= 180) { |
|||
$( "section.vigencias" ).removeClass("fixed"); |
|||
} |
|||
else if (!$( "section.vigencias" ).hasClass("fixed")){ |
|||
$( "section.vigencias" ).addClass("fixed"); |
|||
} |
|||
}); |
|||
|
|||
function textoMultiVigente(item) { |
|||
|
|||
$(".compilacao .tipo-vigencias a").removeClass("selected") |
|||
$(item).addClass("selected") |
|||
|
|||
$(".desativado").removeClass("displaynone"); |
|||
$(".link_alterador").removeClass("displaynone"); |
|||
} |
|||
function textoVigente(item, link) { |
|||
|
|||
$(".compilacao .tipo-vigencias a").removeClass("selected") |
|||
$(item).addClass("selected") |
|||
|
|||
$(".desativado").addClass("displaynone"); |
|||
$(".link_alterador").removeClass("displaynone"); |
|||
|
|||
if (!link) |
|||
$(".link_alterador").addClass("displaynone"); |
|||
} |
|||
|
|||
|
|||
</script> |
|||
|
|||
<div class="compilacao"> |
|||
{% for key, values in view.get_vigencias.items %} |
|||
{% if forloop.first %} |
|||
<section class="vigencias"> |
|||
<nav class="top-bar" data-topbar="" role="navigation"> |
|||
<section class="top-bar-section"> |
|||
<ul class="nav left"> |
|||
{%endif%} |
|||
<li class="nav__item has-dropdown"> |
|||
{% if forloop.first %} |
|||
{% for dispositivo in values %} |
|||
<a class="nav__link {% if view.inicio_vigencia == dispositivo.inicio_vigencia %}selected{%endif%}" href="{%url 'vigencia' dispositivo.norma.pk dispositivo|get_sign_vigencia %}" title="{% trans 'Vigência entre'%} {{dispositivo.inicio_vigencia}} {% trans 'e'%} {{dispositivo.fim_vigencia}}">{% trans 'Norma Original'%}</a> |
|||
{% endfor %} |
|||
{% elif forloop.last %} |
|||
{% for dispositivo in values %} |
|||
<a class="nav__link {% if view.inicio_vigencia == None %}selected{%endif%}" href="{%url 'compilacao' dispositivo.norma.pk %}" title="{% trans 'Compilação atual'%}.
{% trans 'Vigência a partir de'%} {{dispositivo.inicio_vigencia}}
{{dispositivo.norma_publicada}}">{% trans 'Norma Atual'%}</a> |
|||
{% endfor %} |
|||
{% else %} |
|||
<a class="nav__link {% if view.inicio_vigencia.year == key %}selected{%endif%}">{{ key }}</a> |
|||
|
|||
|
|||
{%endif%} |
|||
|
|||
{% if not forloop.first and not forloop.last %} |
|||
<ul class="nav__sub-nav dropdown"> |
|||
{% for dispositivo in values %} |
|||
<li class="nav__sub-item"> |
|||
{% if not forloop.parentloop.first %} |
|||
<a class="nav__sub-link" href="{%url 'vigencia' dispositivo.norma.pk dispositivo|get_sign_vigencia %}" title="{{ dispositivo.norma_publicada }}">{% trans 'Vigência entre'%} {{dispositivo.inicio_vigencia}} {% trans 'e'%} {{dispositivo.fim_vigencia}}</a> |
|||
{%endif%} |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
{%endif%} |
|||
</li> |
|||
{% if forloop.last %} |
|||
</ul> |
|||
<ul class="nav left tipo-vigencias"> |
|||
<li><a class="selected" onclick="textoMultiVigente(this);">{% trans 'Texto Multivigente'%}</a></li> |
|||
<li><a onclick="textoVigente(this, true);">{% trans 'Texto Vigente COM Links para Normas Alteradoras'%}</a></li> |
|||
<li><a onclick="textoVigente(this, false);">{% trans 'Texto Vigente SEM Links para Normas Alteradoras'%}</a></li> |
|||
</ul> |
|||
</section> |
|||
</nav> |
|||
</section> |
|||
{%endif%} |
|||
{% endfor %} |
|||
<br> |
|||
{% if view.inicio_vigencia != None and view.fim_vigencia != None %} |
|||
{% trans 'Vigência entre'%} <b>{{view.inicio_vigencia}}</b> {% trans 'e'%} <b>{{view.fim_vigencia}}</b>. |
|||
{%endif%} |
|||
|
|||
|
|||
{% include 'compilacao/template_render_bloco.html'%} |
|||
</div> |
|||
{% endblock base_content %} |
@ -0,0 +1,35 @@ |
|||
{% 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}}"> |
|||
<div class="{% dispositivo_desativado dispositivo view.inicio_vigencia view.fim_vigencia %} {{ dispositivo.tipo_dispositivo.class_css }}" id="id{{dispositivo.id}}"> |
|||
{% spaceless %} |
|||
{{ 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_id}}"> |
|||
{{ dispositivo.tipo_dispositivo.nota_automatica_prefixo_html|safe }} |
|||
{% nota_automatica dispositivo %} |
|||
{{ dispositivo.tipo_dispositivo.nota_automatica_sufixo_html|safe }} |
|||
</a> |
|||
{% endif %} |
|||
{% endspaceless %} |
|||
{% 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> |
|||
{% 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