Browse Source

implement basic editing of Dispositivo

- text editing with textarea
- text editing with Tinymce
pull/10/head
LeandroRoberto 9 years ago
parent
commit
b13dc29661
  1. 50
      compilacao/insert_inicial_TipoDispositivo.sql
  2. 8
      compilacao/models.py
  3. 1
      compilacao/urls.py
  4. 121
      compilacao/views.py
  5. 2
      norma/models.py
  6. 3
      sapl/utils.py
  7. 155
      static/styles/compilacao.scss
  8. 252
      templates/compilacao/edit.html
  9. 62
      templates/compilacao/edit_bloco.html

50
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, '', '<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_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, '', '<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_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, '', '<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_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, '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<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_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, '', '<br>', '', '<br>', '', '', 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, '', '<br>', '', '<br>', '', '', 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, '', '<br>', '', '<br>', '', '', 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, '', '&nbsp;&ndash;&nbsp;', '', '', '', '', 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, '', '&nbsp;&ndash;&nbsp;', '', '', '', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '<br>', '', '<br>', '<br>', '', 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, '', '&nbsp;&ndash;&nbsp;', '', '', '', '', 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, '', '&nbsp;&ndash;&nbsp;', '', '', '', '', 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, '', '<br>', '', '<br>', '', '', 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, '.', '&nbsp;&ndash;&nbsp;', '', '', '', '', 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);

8
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

1
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,

121
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 = {}

2
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%(numero)s de %(data)s') % {

3
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

155
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{

252
templates/compilacao/edit.html

@ -3,7 +3,7 @@
{% load compilacao_filters %}
{% block title%}
<h1><b>Edição:</b> {{ view.get_norma }}</h1>
<h1><b>Edição:</b> {{ view.get_norma }} - <i>Texto Multivigente</i></h1>
{% 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");
});
</script>
<div id="message_block"><div id="msg">Aguarde... Atualizando informações!!!</div></div>
<div class="compilacaoedit">
{% include 'compilacao/edit_bloco.html'%}
{% include 'compilacao/edit_bloco.html'%}
</div>
{% endblock base_content %}
{% endblock base_content %}

62
templates/compilacao/edit_bloco.html

@ -10,10 +10,30 @@
{% if forloop.first and view|isinst:'DispositivoEditView' %}
{% else %}
<div class="dispositivo edit {% dispositivo_desativado dispositivo view.inicio_vigencia view.fim_vigencia %}" id="de{{dispositivo.pk}}" pk="{{dispositivo.pk}}">
<div class="dispositivo edit" id="de{{dispositivo.pk}}" pk="{{dispositivo.pk}}">
{% endif%}
{% if view|render_actions_head:dispositivo %}
<ul class="right actions_head {% if dispositivo.texto == ''%}actions_insert{%endif%}">
{% if not dispositivo.tipo_dispositivo.dispositivo_de_articulacao %}
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh:detail" title="TODO: Edição detalhada">E++</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh:tinymce" title="Editar o texto com TinyMCE">E+</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh:textarea" title="Edição simples apenas do texto">E</a></li>
{% endif%}
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Subir uma posição com todos os subniveis">&#8593;&#8593;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Subir uma posição">&#8593;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Aumentar nível do Dispositivo">&gt;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Descer uma posição com todos os subniveis">&#8595;&#8595;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Descer uma posição">&#8595;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Reduzir nível do Dispositivo">&lt;</a></li>
</ul>
<ul class="actions_head {% if dispositivo.texto == ''%}actions_insert{%endif%}">
{% for inserts in view.select_provaveis_inserts%}
@ -26,25 +46,16 @@
</li>
{% endfor %}
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Aumentar nível do Dispositivo">&gt;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Reduzir nível do Dispositivo">&lt;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Descer uma posição">&#8595;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Subir uma posição">&#8593;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Descer uma posição com todos os subniveis">&#8595;&#8595;</a></li>
<li class="right"><a class="btn-action" pk="{{dispositivo.pk}}" action="refresh" title="TODO: Subir uma posição com todos os subniveis">&#8593;&#8593;</a></li>
</ul>
</ul>
<div class="actions_footer" >
<ul class="left" id="afe{{dispositivo.pk}}" >
<li><a class="btn-action" >{{dispositivo.tipo_dispositivo}} - {ordem:{{dispositivo.ordem}}, nivel:{{dispositivo.nivel}}}</a></li>
</ul>
</div>
<div class="left">Ordem: {{dispositivo.ordem}}, nivel: {{dispositivo.nivel}}</div>
<div class="right">Número: {{dispositivo.get_numero_completo}}</div>
</div>
<div class="label_pai">
<div class="left">Em Edição: {% nomenclatura_heranca dispositivo %} </div>
<div class="right"> {ordem:{{dispositivo.ordem}}, nivel:{{dispositivo.nivel}}}</div>
<div class="right"></div>
</div>
{% endif%}
@ -56,11 +67,11 @@
</div>
<div class="editdi {{ dispositivo.tipo_dispositivo.class_css }}">
<div class="editdi {% dispositivo_desativado dispositivo view.inicio_vigencia view.fim_vigencia %} {{ dispositivo.tipo_dispositivo.class_css }}">
{% spaceless %}
<a class="di" id="id{{dispositivo.id}}" pk="{{dispositivo.pk}}" ordem="{{dispositivo.ordem}}" name="{{dispositivo.pk}}" title="{{dispositivo.pk}}">
{{ dispositivo.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ dispositivo.rotulo }}{{ dispositivo.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ dispositivo.tipo_dispositivo.texto_prefixo_html|safe }}
{% if dispositivo.texto == '' and not dispositivo.tipo_dispositivo.dispositivo_de_articulacao %}<b>({{dispositivo.tipo_dispositivo}} sem texto)</b>{%else%}{{ dispositivo.texto|safe }}{%endif%}
{% if dispositivo.texto == '' and not dispositivo.tipo_dispositivo.dispositivo_de_articulacao %}<span class="semtexto">({{dispositivo.tipo_dispositivo}} sem texto)</span>{%else%}{{ dispositivo.texto|safe }}{%endif%}
</a>
{% if dispositivo.norma_publicada_id != None %}
@ -77,9 +88,22 @@
{%endwith%}
{% endif%}
</div>
<div class="clear"></div>
{% else%}
{% if not dispositivo.tipo_dispositivo.dispositivo_de_articulacao %}
<div class="editdi_form">
<form style="text-align: center;" method="post" action="{{dispositivo.pk}}/refresh">
{% csrf_token %}
<textarea id="editdi_texto" name="texto" rows="10">{{ dispositivo.texto|safe }}</textarea>
<br>
<input type="submit" value="Salvar" class="button primary" />
</form>
<div class="clear"></div>
</div>
{%endif%}
{% endif%}
{% set_nivel_old view dispositivo.nivel %}

Loading…
Cancel
Save