From b13dc29661e7affe1978e01ff73a2dd730b25490 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Tue, 20 Oct 2015 11:22:53 -0200 Subject: [PATCH] implement basic editing of Dispositivo - text editing with textarea - text editing with Tinymce --- compilacao/insert_inicial_TipoDispositivo.sql | 50 ++-- compilacao/models.py | 8 +- compilacao/urls.py | 1 - compilacao/views.py | 121 +++++++-- norma/models.py | 2 +- sapl/utils.py | 3 - static/styles/compilacao.scss | 155 ++++++----- templates/compilacao/edit.html | 252 ++++++++++-------- templates/compilacao/edit_bloco.html | 62 +++-- 9 files changed, 401 insertions(+), 253 deletions(-) diff --git a/compilacao/insert_inicial_TipoDispositivo.sql b/compilacao/insert_inicial_TipoDispositivo.sql index bc4dd8023..196e8e46d 100644 --- a/compilacao/insert_inicial_TipoDispositivo.sql +++ b/compilacao/insert_inicial_TipoDispositivo.sql @@ -1,27 +1,29 @@ -INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (25, 'Disposições Preliminares', 'disp_preliminares', '', 'Disposições Preliminares', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (26, 'Disposições Gerais', 'disp_gerais', '', 'Disposições Gerais', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (27, 'Disposições Transitórias', 'disp_transitorias', '', 'Disposições Transitórias', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (28, 'Disposições Finais', 'disp_finais', '', 'Disposições Finais', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (29, 'Texto Não Estruturado', 'texto_n_estruturado', '', '', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (14, 'Título', 'titulo', '', 'Título', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (13, 'Livro', 'livro', '', 'Livro', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (12, 'Parte', 'parte', '', 'Parte', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (11, 'Anexo', 'anexo', '', 'Anexo', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (16, 'Seção', 'secao', '', 'Seção', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (17, 'SubSeção', 'subsecao', '', 'SubSeção', 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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (18, 'Item de Seção', 'itemsecao', '', '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_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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45) VALUES (15, 'Capítulo', 'capitulo', '', 'Capítulo', -1, '', '
', '', '
', '
', '', false, 'I', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-'); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (125, 'Texto Não Estruturado', 'texto_n_estruturado', '', '', 0, '', '', '', '', '', '', false, 'N', 'N', 'N', 'N', 'N', 'N', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (2, 'Ementa', 'ementa', '', '', 0, '', '', '', '', '', '', false, 'N', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (4, 'Omissis', 'omissis', '', '', 0, '', '', '', '', '', '', false, '1', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (102, 'Disposições Gerais', 'disp_gerais', '', 'Disposições Gerais', 0, '', '
', '', '
', '', '', false, 'N', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (103, 'Disposições Transitórias', 'disp_transitorias', '', 'Disposições Transitórias', 0, '', '
', '', '
', '', '', false, 'N', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (104, 'Disposições Finais', 'disp_finais', '', 'Disposições Finais', 0, '', '
', '', '
', '', '', false, 'N', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (122, 'Inciso', 'inciso', '', '', 0, '', ' – ', '', '', '', '', false, 'I', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (123, 'Alinea', 'alinea', '', '', 0, '', ' – ', '', '', '', '', false, 'a', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (120, 'Caput', 'caput', '', '', 0, '', '', '', '', '', '', false, 'N', 'N', 'N', 'N', 'N', 'N', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (118, 'Item de Seção', 'itemsecao', '', 'Item ', 0, '', '
', '', '
', '
', '', false, '1', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (117, 'SubSeção', 'subsecao', '', 'SubSeção ', 0, '', '
', '', '
', '
', '', false, '1', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (116, 'Seção', 'secao', '', 'Seção ', 0, '', '
', '', '
', '
', '', false, 'I', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (114, 'Título', 'titulo', '', 'Título ', 0, '', '
', '', '
', '
', '', false, 'I', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (113, 'Livro', 'livro', '', 'Livro ', 0, '', '
', '', '
', '
', '', false, 'I', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (112, 'Parte', 'parte', '', 'Parte ', 0, '', '
', '', '
', '
', '', false, 'I', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (111, 'Anexo', 'anexo', '', 'Anexo ', 0, '', '
', '', '
', '
', '', false, 'I', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (115, 'Capítulo', 'capitulo', '', 'Capítulo ', 0, '', '
', '', '
', '
', '', false, 'I', 'A', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (124, 'Item', 'item', '', '', 0, '', ' – ', '', '', '', '', false, '1', '1', '1', '1', '1', '1', '.', '.', '.', '.', '.', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (121, 'Parágrafo', 'paragrafo', '', '§ ;Parágrafo Único ', 9, '', ' – ', '', '', '', '', false, '1', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (101, 'Disposições Preliminares', 'disp_preliminares', '', 'Disposições Preliminares', 0, '', '
', '', '
', '', '', false, 'N', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (119, 'Artigo', 'artigo', '', 'Art. ', 9, '.', ' – ', '', '', '', '', true, '1', 'A', '1', '1', '1', '1', '-', '-', '-', '-', '-', true); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (3, 'Bloco Alteração', 'bloco_alteracao', '', '', 0, '', '', '', '', '', '', true, 'N', 'N', 'N', 'N', 'N', 'N', '-', '-', '-', '-', '-', true); +INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html, rotulo_prefixo_texto, rotulo_ordinal, 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, rotulo_separador_variacao01, rotulo_separador_variacao12, rotulo_separador_variacao23, rotulo_separador_variacao34, rotulo_separador_variacao45, dispositivo_de_articulacao) VALUES (1, 'Articulação', 'articulacao', '', '', 0, '', '', '', '', '', '', true, 'N', 'N', 'N', 'N', 'N', 'N', '-', '-', '-', '-', '-', true); -SELECT pg_catalog.setval('compilacao_tipodispositivo_id_seq', 28, true); + + +SELECT pg_catalog.setval('compilacao_tipodispositivo_id_seq', 125, true); diff --git a/compilacao/models.py b/compilacao/models.py index 736d3fa4f..d208d283b 100644 --- a/compilacao/models.py +++ b/compilacao/models.py @@ -467,7 +467,8 @@ class Dispositivo(BaseModel): tipo_dispositivo=self.tipo_dispositivo, dispositivo_pai=self.dispositivo_pai).count() - if count_irmaos_mesmo_tipo > 1 and self.dispositivo0 != 0: + if count_irmaos_mesmo_tipo > 1 or ( + self.dispositivo0 != 0 and not for_insertion): r += prefixo[0] r += self.get_nomenclatura_completa() elif count_irmaos_mesmo_tipo == 1 and for_insertion: @@ -706,9 +707,8 @@ class Dispositivo(BaseModel): try: dispositivos = Dispositivo.objects.order_by('-ordem').filter( norma_id=self.norma_id) - except Exception as e: - a = 1 - a += 1 + except: + return ordem = dispositivos.count() * 1000 for d in dispositivos: d.ordem = ordem diff --git a/compilacao/urls.py b/compilacao/urls.py index 540d1adc9..a60a623be 100644 --- a/compilacao/urls.py +++ b/compilacao/urls.py @@ -1,5 +1,4 @@ from django.conf.urls import url, include -from django.contrib.auth.decorators import permission_required from compilacao import views from compilacao.views import (tipo_nota_crud, tipo_vide_crud, diff --git a/compilacao/views.py b/compilacao/views.py index 12b6df2d7..b5bbc090f 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -1,7 +1,8 @@ from collections import OrderedDict -from datetime import timedelta +from datetime import timedelta, datetime from os.path import sys +from django import forms from django.core.signing import Signer from django.db.models import Q from django.db.models.aggregates import Max @@ -9,10 +10,11 @@ from django.http.response import JsonResponse from django.utils.dateparse import parse_date from django.utils.translation import ugettext_lazy as _ from django.views.generic.base import TemplateView +from django.views.generic.edit import FormMixin from django.views.generic.list import ListView -from compilacao.models import Dispositivo, TipoNota, TipoVide, TipoPublicacao,\ - VeiculoPublicacao, TipoDispositivo +from compilacao.models import (Dispositivo, TipoNota, TipoVide, TipoPublicacao, + VeiculoPublicacao, TipoDispositivo) from norma.models import NormaJuridica from sapl.crud import build_crud @@ -265,14 +267,74 @@ class CompilacaoEditView(CompilacaoView): self.flag_nivel_ini = 0 self.flag_nivel_old = -1 - return Dispositivo.objects.filter( - ordem__gt=0, + result = Dispositivo.objects.filter( norma_id=self.kwargs['norma_id'] ).select_related(*DISPOSITIVO_SELECT_RELATED) + if not result.exists(): + + norma = NormaJuridica.objects.get(pk=self.kwargs['norma_id']) + + td = TipoDispositivo.objects.filter(class_css='articulacao')[0] + a = Dispositivo() + a.nivel = 0 + a.ordem = Dispositivo.INTERVALO_ORDEM + a.ordem_bloco_atualizador = 0 + a.set_numero_completo([1, 0, 0, 0, 0, 0, ]) + a.norma = norma + a.tipo_dispositivo = td + a.inicio_vigencia = norma.data_publicacao + a.inicio_eficacia = norma.data_publicacao + a.timestamp = datetime.now() + a.save() + + td = TipoDispositivo.objects.filter(class_css='ementa')[0] + e = Dispositivo() + e.nivel = 1 + e.ordem = a.ordem + Dispositivo.INTERVALO_ORDEM + e.ordem_bloco_atualizador = 0 + e.set_numero_completo([1, 0, 0, 0, 0, 0, ]) + e.norma = norma + e.tipo_dispositivo = td + e.inicio_vigencia = norma.data_publicacao + e.inicio_eficacia = norma.data_publicacao + e.timestamp = datetime.now() + e.texto = norma.ementa + e.save() + + a.pk = None + a.nivel = 0 + a.ordem = e.ordem + Dispositivo.INTERVALO_ORDEM + a.ordem_bloco_atualizador = 0 + a.set_numero_completo([2, 0, 0, 0, 0, 0, ]) + a.timestamp = datetime.now() + a.save() + + result = Dispositivo.objects.filter( + norma_id=self.kwargs['norma_id'] + ).select_related(*DISPOSITIVO_SELECT_RELATED) + + return result + + +class DispositivoSimpleEditForm(forms.Form): + texto = forms.CharField(required=False, widget=forms.Textarea) + -class DispositivoEditView(CompilacaoEditView): +class DispositivoEditView(CompilacaoEditView, FormMixin): template_name = 'compilacao/edit_bloco.html' + form_class = DispositivoSimpleEditForm + + def post(self, request, *args, **kwargs): + + d = Dispositivo.objects.get( + pk=self.kwargs['dispositivo_id']) + + texto = request.POST['texto'] + d.texto = texto + d.save() + + return self.get(request, *args, **kwargs) def get_queryset(self): self.flag_alteradora = -1 @@ -422,8 +484,7 @@ class DispositivoEditView(CompilacaoEditView): for td in otds: - if td.class_css == 'caput' or (tipb.class_css == 'caput' and - td.class_css == 'paragrafo'): + if td.class_css == 'caput': continue d_base.tipo_dispositivo = td @@ -477,17 +538,21 @@ class DispositivoEditView(CompilacaoEditView): 'dispositivo_base': d_base.pk}] if mudarnivel == 1: - result[1]['itens'] += r + if (tipb.class_css == 'caput' and + td.class_css == 'paragrafo'): + result[0]['itens'].insert(0, r[0]) + else: + result[1]['itens'] += r else: if td.pk < tipb.pk: result[2]['itens'] += r result[0]['itens'] += r - # retira inserir após e inserir antes if tipb.class_css == 'caput': result.pop() # result.remove(result[0]) + # retira inserir após e inserir antes if tipb.class_css == 'articulacao': r = result[0] result.remove(result[0]) @@ -513,7 +578,13 @@ class ActionsEditMixin(object): pass def add_in(self, context): - pass + # pai = Dispositivo.objects.get(pk=context['dispositivo_id']) + # dp = Dispositivo.objects.get(pk=context['dispositivo_id']) + + # Tipo Filho + # tf = TipoDispositivo.objects.get(pk=context['tipo_pk']) + + return {} def add_next(self, context): try: @@ -521,17 +592,18 @@ class ActionsEditMixin(object): dp = Dispositivo.objects.get(pk=context['dispositivo_id']) tipo = TipoDispositivo.objects.get(pk=context['tipo_pk']) + variacao = int(context['variacao']) while dp.dispositivo_pai is not None and \ dp.tipo_dispositivo_id != tipo.pk: dp = dp.dispositivo_pai - # Inserção interna a uma articulação um tipo já existente - # ou de uma articulacao + # Inserção interna a uma articulação de um tipo já existente + # ou de uma nova articulacao if dp.dispositivo_pai is not None or \ tipo.class_css == 'articulacao': - dp.transform_in_next(int(context['variacao'])) + dp.transform_in_next(variacao) dp.rotulo = dp.rotulo_padrao() dp.texto = '' dp.pk = None @@ -548,16 +620,17 @@ class ActionsEditMixin(object): if not tipo.contagem_continua: irmaos = list(Dispositivo.objects.filter( + Q(ordem__gt=dp.ordem) | Q(dispositivo0=0), dispositivo_pai_id=dp.dispositivo_pai_id, - ordem__gt=dp.ordem, tipo_dispositivo_id=tipo.pk)) + elif tipo.class_css == 'articulacao': irmaos = list(Dispositivo.objects.filter( ordem__gt=dp.ordem, norma_id=dp.norma_id, tipo_dispositivo_id=tipo.pk)) - else: # contagem continua restrita a articulacao + else: # contagem continua restrita a articulacao proxima_articulacao = Dispositivo.objects.filter( ordem__gt=dp.ordem, nivel=0, @@ -580,6 +653,11 @@ class ActionsEditMixin(object): irmaos_a_salvar = [] ultimo_irmao = None for irmao in irmaos: + + if irmao.ordem <= dp.ordem: + irmaos_a_salvar.append(irmao) + continue + irmao_profundidade = irmao.get_profundidade() if irmao_profundidade < dp_profundidade: break @@ -613,6 +691,12 @@ class ActionsEditMixin(object): irmaos_a_salvar.reverse() for irmao in irmaos_a_salvar: + if irmao.dispositivo0 == 0 and \ + irmao.ordem <= dp.ordem and variacao == 0: + irmao.dispositivo0 = 1 + irmao.rotulo = irmao.rotulo_padrao() + dp.dispositivo0 = 2 + dp.rotulo = dp.rotulo_padrao() irmao.clean() irmao.save() @@ -654,7 +738,8 @@ class ActionsEditMixin(object): dp.norma_publicada = None if tipo.contagem_continua: - ultimo_irmao = Dispositivo.objects.order_by('-ordem').filter( + ultimo_irmao = Dispositivo.objects.order_by( + '-ordem').filter( ordem__lte=dp.ordem, tipo_dispositivo_id=tipo.pk, norma_id=dp.norma_id)[:1] @@ -765,7 +850,7 @@ class ActionsEditMixin(object): filho.clean() filho.save() - ''' Renumerar dispositivos de + ''' Renumerar dispositivos de contagem continua, caso a inserção seja uma articulação''' numtipos = {} diff --git a/norma/models.py b/norma/models.py index a6f24dce7..265ad129d 100644 --- a/norma/models.py +++ b/norma/models.py @@ -97,7 +97,7 @@ class NormaJuridica(models.Model): class Meta: verbose_name = _('Norma Jurídica') verbose_name_plural = _('Normas Jurídicas') - ordering = ['-data'] + ordering = ['-data', '-numero'] def __str__(self): return _('%(tipo)s nº %(numero)s de %(data)s') % { diff --git a/sapl/utils.py b/sapl/utils.py index 10962a55e..139a504c2 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -1,10 +1,7 @@ -from builtins import TypeError - from django.apps import apps from django.contrib import admin from django.utils.translation import ugettext_lazy as _ - # SAPL business apps # This is a dependency order: each entry depends only on previous ones # The order is important for migration code diff --git a/static/styles/compilacao.scss b/static/styles/compilacao.scss index e649b6bc0..a8e7ade94 100644 --- a/static/styles/compilacao.scss +++ b/static/styles/compilacao.scss @@ -214,33 +214,18 @@ .compilacaoedit { + margin-bottom: 30em; margin-left: 0.8em; z-index: 1; } -.compilacaoedit .articulacao{ - - margin-left: -0.8em; - margin-top: 2em; +.compilacaoedit .semtexto { + font-weight: bold; + color: #8DA6D8; } -.compilacaoedit .articulacao::before { - content: "Articulação"; - background-color: #eee; - border-bottom: 1px solid #aaa; - padding: 0.333em; - padding-left: 1em; - display:block; -} -.compilacaoedit .editclick .articulacao::before { - display: none; -} -.compilacaoedit .editdi { - display: block; - clear: left; -} .compilacaoedit .edit { position: relative; @@ -314,11 +299,47 @@ right: -0.51rem; } -.compilacaoedit .edit *:hover { + +.compilacaoedit .editdi { + display: block; + clear: left; +} + +.compilacaoedit .editdi *:hover { background-color: #eee; } -.compilacaoedit .editclick > .label_pai { + +.compilacaoedit .articulacao{ + + margin-left: -0.8em; + margin-top: 2em; +} + +.compilacaoedit .articulacao::before { + content: "Articulação"; + background-color: #eee; + border-bottom: 1px solid #aaa; + padding: 0.333em; + padding-left: 1em; + display:block; +} + +.compilacaoedit .editselected .articulacao::before { + display: none; +} +.compilacaoedit .editselected > .editdi { + padding: 1em; +} + +.compilacaoedit .editdi_form { + display: block; + clear: both; + padding: 1em; +} + + +.compilacaoedit .editselected > .label_pai { position: absolute; color: #999; top: -1.7em; @@ -328,9 +349,9 @@ height: auto; } -.compilacaoedit .editclick { +.compilacaoedit .editselected { border: 2.1em solid #eee; - padding: 1em; + padding: 0 0 1em 0; padding-bottom: 0em; margin: 1em -2em 1em -2.8em; z-index: 1; @@ -338,7 +359,7 @@ box-shadow: 0 1px 2px #aaa; } -.compilacaoedit .editclick > .actions { +.compilacaoedit .editselected > .actions { display: none; } @@ -348,9 +369,9 @@ position: relative; opacity: 0; transition: all 0.4s ease-in-out; - border-bottom: 1px solid #2980b9; + border-top: 1px solid #2980b9; z-index: 9; - margin: -1em -1em 2em -1em; + margin: 0em; } .compilacaoedit .actions_head ul { @@ -365,13 +386,16 @@ max-width:something; } .compilacaoedit .actions_head > li.left { - border-left: 1px solid white; + border-right: 1px solid white; } -.compilacaoedit .actions_head > li.right{ +.compilacaoedit .actions_head > li.right { width: 3em; - text-align: center; + text-align: center; +} + +.compilacaoedit .actions_head > li.right:nth-child(3n + 1) { clear:right; } @@ -424,6 +448,7 @@ .compilacaoedit .actions_head > li > a.btn-action { font-weight: bold; font-size: 1em; + } .compilacaoedit .actions_head { @@ -448,44 +473,40 @@ .compilacaoedit .actions_insert > li.right{ opacity: 1; width: 3em; - text-align: center; + text-align: center; +} +.compilacaoedit .actions_insert > li.right:nth-child(3n + 1) { clear:right; } + .compilacaoedit .actions_insert > li.left:nth-child(1), .compilacaoedit .actions_insert > li.left:nth-child(2) { opacity: 1; display: block; - min-width: 35%; - max-width: 35%; + min-width: 30%; + max-width: 30%; } .compilacaoedit .actions_insert li.left:nth-child(1) ul, .compilacaoedit .actions_insert li.left:nth-child(2) ul { - display: block; position: relative; - } -.compilacaoedit .actions_insert li.left:nth-child(3):hover ul { - right: 0; +.compilacaoedit .actions_insert li.left:nth-child(n+3):hover ul { + right: 0; box-shadow: -3px 3px 1.5em #336; } - - - - - -.compilacaoedit .actions_footer { - color: #fff; - position: absolute; - top: 100%; - left: -2em; - opacity: 0; - transition: all 0.4s ease-in-out; - clip: rect(0,0,0,0); +.compilacaoedit .actions_footer { + position: absolute; + top: 100%; + left: -1.8em; + right: -1.8em; + color: #999; + transition: all 0.4s ease-in-out; + padding: 0.3em 0; } .compilacaoedit .actions_footer ul { @@ -497,42 +518,18 @@ display: block; height: auto !important; } - -.compilacaoedit .editclick > .actions_footer a.btn-action { - background: #3498db; - - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0px; - color: #ffffff !important; - font-size: 12px; - padding: 1px 6px 1px 7px; - text-decoration: none; - display: block; -} - -.compilacaoedit .editclick > .actions_footer a.btn-action:hover { - background: #3cb0fd; - - text-decoration: none; -} -.compilacaoedit .editclick > .actions_footer { - z-index: 99; - opacity: 0.5; - clip: rect(0,0,0,0); -} - -.compilacaoedit .editclick > .actions_footer:hover { - opacity: 1; - clip: auto -} - + .clear { clear:both; height: 0; width: 0; } +#tinymce .mceContentBody p { + font-family: "Open Sans" "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif !important; +} + + @media only screen and (max-width: 40.0625em) { .compilacao .fixed{ diff --git a/templates/compilacao/edit.html b/templates/compilacao/edit.html index 09f8d96ba..07fbcfbdf 100644 --- a/templates/compilacao/edit.html +++ b/templates/compilacao/edit.html @@ -3,7 +3,7 @@ {% load compilacao_filters %} {% block title%} -

Edição: {{ view.get_norma }}

+

Edição: {{ view.get_norma }} - Texto Multivigente

{% endblock %} {% block base_content %} @@ -12,77 +12,91 @@ $(document).ready(function() { - var flag_add_next = false - var flag_add_next_pk = 0 - var flag_add_next_pai = 0 - - clickEditDispositivo = function(event) { - var _pk = event.currentTarget.getAttribute('pk'); - - - if ($('#de'+_pk).hasClass("editclick")) { - clearEditClick(); - return; - } - - clearEditClick(); - - clickUpdateDispositivo(event) - } - - clickUpdateDispositivo = function(event, __pk, __action, addeditclick) { - - var _pk = __pk; - var _action = __action; - var _variacao = ''; - var _tipo_pk = ''; - - if (event != null) { - _pk = event.currentTarget.getAttribute('pk'); - _action = $(this).attr('action'); - _variacao = $(this).attr('variacao'); - _tipo_pk = $(this).attr('tipo_pk'); - } - - if (flag_add_next_pk == 0) - flag_add_next_pk = _pk - - var url = '' - if (_action == '') - return - else if (_action == 'refresh' || _action == null) - url = _pk+'/refresh?pkadd='+flag_add_next_pk; - else { - url = _pk+'/actions?action='+_action; - url += '&tipo_pk='+_tipo_pk; - url += '&variacao='+_variacao; - if (typeof addeditclick == 'undefined' || addeditclick) { - $("#message_block").css("display", "block"); - } - } + var flag_add_next = false + var flag_add_next_pk = 0 + var flag_add_next_pai = 0 + + var withTinymce = false + + clickEditDispositivo = function(event) { + var _pk = event.currentTarget.getAttribute('pk'); + if ($('#de'+_pk).hasClass("editselected")) { + clearEditSelected(); + return; + } + clearEditSelected(); + clickUpdateDispositivo(event) + } + + clickUpdateDispositivo = function(event, __pk, __action, addeditselected) { + + var _pk = __pk; + var _action = __action; + var _variacao = ''; + var _tipo_pk = ''; + + if (event != null) { + _pk = event.currentTarget.getAttribute('pk'); + _action = $(this).attr('action'); + _variacao = $(this).attr('variacao'); + _tipo_pk = $(this).attr('tipo_pk'); + } - $.get(url).done(function( data ) { - - if (addeditclick) - clearEditClick(); + if (flag_add_next_pk == 0) + flag_add_next_pk = _pk + + var url = '' + if (_action == '') + return + else if ( _action == null || _action.startsWith('refresh')) { + + if (_action != null && _action.endsWith('tinymce')) + withTinymce = true; + else if (_action != null && _action.endsWith('textarea')) + withTinymce = false; + + url = _pk+'/refresh?pkadd='+flag_add_next_pk+url; + + } + else { + url = _pk+'/actions?action='+_action; + url += '&tipo_pk='+_tipo_pk; + url += '&variacao='+_variacao; + if (addeditselected == null || addeditselected) { + $("#message_block").css("display", "block"); + } + } - if (_action == 'refresh' || _action == null) { + $.get(url).done(function( data ) { + if ( _action == null || _action.startsWith('refresh')) { + + if (addeditselected) + clearEditSelected(); if (flag_add_next) { - $( '#de' + _pk ).html( data); + $( '#de' + _pk ).html( data); flag_add_next = false } else { - clearEditClick(); + clearEditSelected(); $( '#de' + _pk ).prepend( data ); - } - - reloadFunctionClicks(); - - if (typeof addeditclick == 'undefined' || addeditclick) { - $('#de'+flag_add_next_pk).addClass('editclick'); + } + reloadFunctionClicks(); + + if ( withTinymce ) + tinymce.init({ + mode : "textareas", + force_br_newlines : false, + force_p_newlines : false, + forced_root_block : '', + plugins: "table", + tools: "inserttable", + }); + + if (addeditselected == null || addeditselected) { + $('#de'+flag_add_next_pk).addClass('editselected'); $('html, body').animate({ scrollTop: $('#de' + flag_add_next_pk ).offset().top - window.innerHeight / 10 }, 300); @@ -91,62 +105,92 @@ $(document).ready(function() { } else if (_action == 'add_next') { - - clearEditClick(); - - flag_add_next_pk = data.pk; - flag_add_next_pai = data.pai; - - if (flag_add_next_pk != null) - for (var pai = 0; pai < flag_add_next_pai.length; pai++) - if (flag_add_next_pai[pai] != -1) { + + clearEditSelected(); + + flag_add_next_pk = data.pk; + flag_add_next_pai = data.pai; + + if (flag_add_next_pk != null) + for (var pai = 0; pai < flag_add_next_pai.length; pai++) + if (flag_add_next_pai[pai] != -1) { flag_add_next = true; flag_add_next_pk = data.pk; clickUpdateDispositivo(null, flag_add_next_pai[pai], 'refresh', pai == 0); - } - else { - href = location.href.split('#')[0] - location.href = href+'#'+flag_add_next_pk - location.reload(true) - } - else { - alert('Erro na inserção!'); - flag_add_next_pk = 0; - flag_add_next = false; - } - } - }).always(function() { - $("#message_block").css("display", "none"); - }); - - } - - -function clearEditClick() { - $('.editclick').removeClass('editclick'); - $('.editclick .label_pai, .edit .label_pai').remove(); - $('.editclick .actions_head, .edit .actions_head').remove(); - $('.editclick .actions_footer, .edit .actions_footer').remove(); + } + else { + href = location.href.split('#')[0] + location.href = href+'#'+flag_add_next_pk + location.reload(true) + } + else { + alert('Erro na inserção!'); + flag_add_next_pk = 0; + flag_add_next = false; + } + } + }).always(function() { + $("#message_block").css("display", "none"); + }); + } + + +function clearEditSelected() { + tinymce.remove(); + $('.editselected').removeClass('editselected'); + $('.editdi_form').remove(); + $('.editselected .label_pai, .edit .label_pai').remove(); + $('.editselected .actions_head, .edit .actions_head').remove(); + $('.editselected .actions_footer, .edit .actions_footer').remove(); } function reloadFunctionClicks() { - $('.dispositivo .edit .di').off(); - $('.actions .btn-action').off(); - $('.actions_head .btn-action').off(); - - $('.dispositivo .edit .di').on('click', clickEditDispositivo); - $('.actions .btn-action').on('click', clickEditDispositivo); - $('.actions_head .btn-action').on('click', clickUpdateDispositivo); + $('.dispositivo .edit .di').off(); + $('.actions .btn-action').off(); + $('.actions_head .btn-action').off(); + $('.dispositivo .edit .di').on('click', clickEditDispositivo); + $('.actions .btn-action').on('click', clickEditDispositivo); + $('.actions_head .btn-action').on('click', clickUpdateDispositivo); + + $('.editdi_form form').submit(function(event) { + var texto = '' + var editorTiny = tinymce.get('editdi_texto') + + if (editorTiny != null) + texto = editorTiny.getContent(); + else + texto = $('#editdi_texto').val(); + + var formData = { + 'csrfmiddlewaretoken' : $('input[name=csrfmiddlewaretoken]').val(), + 'texto' : texto + }; + var $form = $( this ), + url = $form.attr( "action" ); + $("#message_block").css("display", "block"); + $.post(url,formData) + .done(function(data) { + $('.editselected').html(data); + clearEditSelected(); + reloadFunctionClicks(); + + }).always(function() { + $("#message_block").css("display", "none"); + }); + event.preventDefault(); + }); } reloadFunctionClicks(); $("#message_block").css("display", "none"); + });
Aguarde... Atualizando informações!!!
- {% include 'compilacao/edit_bloco.html'%} + {% include 'compilacao/edit_bloco.html'%}
-{% endblock base_content %} \ No newline at end of file +{% endblock base_content %} + diff --git a/templates/compilacao/edit_bloco.html b/templates/compilacao/edit_bloco.html index d8318baf4..751ecf71d 100644 --- a/templates/compilacao/edit_bloco.html +++ b/templates/compilacao/edit_bloco.html @@ -10,10 +10,30 @@ {% if forloop.first and view|isinst:'DispositivoEditView' %} {% else %} -
+
{% endif%} {% if view|render_actions_head:dispositivo %} +
    + + + {% if not dispositivo.tipo_dispositivo.dispositivo_de_articulacao %} +
  • E++
  • +
  • E+
  • +
  • E
  • + {% endif%} + +
  • ↑↑
  • +
  • +
  • >
  • + + +
  • ↓↓
  • +
  • +
  • <
  • + +
+
    {% for inserts in view.select_provaveis_inserts%} @@ -26,25 +46,16 @@ {% endfor %} - -
  • >
  • -
  • <
  • -
  • -
  • -
  • ↓↓
  • -
  • ↑↑
  • -
- + + +
Ordem: {{dispositivo.ordem}}, nivel: {{dispositivo.nivel}}
+
Número: {{dispositivo.get_numero_completo}}
+
Em Edição: {% nomenclatura_heranca dispositivo %}
-
{ordem:{{dispositivo.ordem}}, nivel:{{dispositivo.nivel}}}
+
{% endif%} @@ -56,11 +67,11 @@
-
+ -
+ {% else%} + + {% if not dispositivo.tipo_dispositivo.dispositivo_de_articulacao %} +
+
+ {% csrf_token %} + +
+ +
+
+
+ {%endif%} + {% endif%} {% set_nivel_old view dispositivo.nivel %}