Browse Source

implementa herança em perfis de Textos Articulados

pull/797/head
LeandroRoberto 8 years ago
parent
commit
3506b8ac97
  1. 9
      sapl/compilacao/compilacao_data_tables.sql
  2. 21
      sapl/compilacao/migrations/0070_perfilestruturaltextoarticulado_parent.py
  3. 58
      sapl/compilacao/models.py
  4. 4
      sapl/materia/forms.py
  5. 21
      sapl/materia/migrations/0070_auto_20161111_1301.py
  6. 2
      sapl/materia/models.py
  7. 2
      sapl/templates/materia/layouts.yaml

9
sapl/compilacao/compilacao_data_tables.sql

@ -1,6 +1,7 @@
INSERT INTO compilacao_perfilestruturaltextoarticulado (id, sigla, nome, padrao) VALUES (2, 'LC95-v', 'Lei Complementar 95 com Variação', false);
INSERT INTO compilacao_perfilestruturaltextoarticulado (id, sigla, nome, padrao) VALUES (1, 'LC95', 'Lei Complementar 95', true);
SELECT pg_catalog.setval('compilacao_perfilestruturaltextoarticulado_id_seq', 2, true);
INSERT INTO compilacao_perfilestruturaltextoarticulado (id, sigla, nome, padrao) VALUES (2, 'LC95-v', 'Lei Complementar 95 com Variação', false);
INSERT INTO compilacao_perfilestruturaltextoarticulado (id, sigla, nome, padrao) VALUES (3, 'PLOL', 'Projeto de Lei Ordinária do Legislativo', false);
SELECT pg_catalog.setval('compilacao_perfilestruturaltextoarticulado_id_seq', 3, 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, dispositivo_de_alteracao) VALUES (1, 'Articulação', 'articulacao', '', '', 0, '', '', '', '', '', '', true, 'N', 'N', 'N', 'N', 'N', 'N', '-', '-', '-', '-', '-', true, 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, dispositivo_de_alteracao) VALUES (2, 'Ementa', 'ementa', '', '', 0, '', '', '', '', '', '', false, 'N', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false, false);
@ -24,7 +25,9 @@ INSERT INTO compilacao_tipodispositivo (id, nome, class_css, rotulo_prefixo_html
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, dispositivo_de_alteracao) VALUES (123, 'Alinea', 'alinea', '', '', 0, ')', ' – ', '', '', '', '', false, 'a', '1', '1', '1', '1', '1', '-', '-', '-', '-', '-', false, 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, dispositivo_de_alteracao) VALUES (124, 'Item', 'item', '', '', 0, '', ' – ', '', '', '', '', false, '1', '1', '1', '1', '1', '1', '.', '.', '.', '.', '.', false, 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, dispositivo_de_alteracao) VALUES (125, 'Texto Não Estruturado', 'texto_n_estruturado', '', '', 0, '', '', '', '', '', '', true, 'N', 'N', 'N', 'N', 'N', 'N', '-', '-', '-', '-', '-', false, false);
SELECT pg_catalog.setval('compilacao_tipodispositivo_id_seq', 125, 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, dispositivo_de_alteracao) VALUES (126, 'Justificativa', 'titulo', '', '', 0, '', '', '', '', '', '', true, 'N', 'N', 'N', 'N', 'N', 'N', '-', '-', '-', '-', '-', false, false);
SELECT pg_catalog.setval('compilacao_tipodispositivo_id_seq', 126, true);
delete from compilacao_tipodispositivorelationship;

21
sapl/compilacao/migrations/0070_perfilestruturaltextoarticulado_parent.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-11-11 13:01
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('compilacao', '0069_auto_20161107_1932'),
]
operations = [
migrations.AddField(
model_name='perfilestruturaltextoarticulado',
name='parent',
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='perfil_parent_set', to='compilacao.PerfilEstruturalTextoArticulado', verbose_name='Perfil Herdado'),
),
]

58
sapl/compilacao/models.py

@ -6,6 +6,7 @@ from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.db.models import F, Q
from django.db.models.aggregates import Max
from django.db.models.deletion import PROTECT
from django.http.response import Http404
from django.template import defaultfilters
from django.utils.decorators import classonlymethod
@ -657,39 +658,49 @@ class TipoDispositivo(BaseModel):
def permitido_inserir_in(
self, pai_relativo, include_relative_autos=True, perfil_pk=None):
perfil = PerfilEstruturalTextoArticulado.objects.all()
if not perfil_pk:
perfis = PerfilEstruturalTextoArticulado.objects.filter(
padrao=True)[:1]
perfil = perfil.filter(padrao=True)
if not perfis.exists():
return False
else:
perfil = perfil.filter(pk=perfil_pk)
perfil_pk = perfis[0].pk
if not perfil.exists():
return False
pp = self.possiveis_pais.filter(pai=pai_relativo, perfil_id=perfil_pk)
if pp.exists():
if not include_relative_autos:
if pp[0].filho_de_insercao_automatica:
return False
return True
perfil = perfil[0]
while perfil:
pp = self.possiveis_pais.filter(pai=pai_relativo, perfil=perfil)
if pp.exists():
if not include_relative_autos:
if pp[0].filho_de_insercao_automatica:
return False
return True
perfil = perfil.parent
return False
def permitido_variacao(
self, base, perfil_pk=None):
perfil = PerfilEstruturalTextoArticulado.objects.all()
if not perfil_pk:
perfis = PerfilEstruturalTextoArticulado.objects.filter(
padrao=True)[:1]
perfil = perfil.filter(padrao=True)
if not perfis.exists():
return False
else:
perfil = perfil.filter(pk=perfil_pk)
perfil_pk = perfis[0].pk
if not perfil.exists():
return False
pp = self.possiveis_pais.filter(pai=base, perfil_id=perfil_pk)
if pp.exists():
if pp[0].permitir_variacao:
return True
perfil = perfil[0]
while perfil:
pp = self.possiveis_pais.filter(pai=base, perfil=perfil)
if pp.exists():
if pp[0].permitir_variacao:
return True
perfil = perfil.parent
return False
@ -701,6 +712,13 @@ class PerfilEstruturalTextoArticulado(BaseModel):
default=False,
choices=YES_NO_CHOICES, verbose_name=_('Padrão'))
parent = models.ForeignKey(
'self',
blank=True, null=True, default=None,
related_name='perfil_parent_set',
on_delete=PROTECT,
verbose_name=_('Perfil Herdado'))
class Meta:
verbose_name = _('Perfil Estrutural de Texto Articulado')
verbose_name_plural = _('Perfis Estruturais de Textos Articulados')

4
sapl/materia/forms.py

@ -834,7 +834,7 @@ class ProposicaoForm(forms.ModelForm):
label=_('Tipo do Texto da Proposição'),
required=False,
choices=TIPO_TEXTO_CHOICE,
widget=widgets.CheckboxSelectMultiple())
widget=widgets.RadioSelect())
materia_de_vinculo = forms.ModelChoiceField(
queryset=MateriaLegislativa.objects.all(),
@ -885,7 +885,7 @@ class ProposicaoForm(forms.ModelForm):
if self.texto_articulado_proposicao:
fields.append(
to_column((InlineCheckboxes('tipo_texto'), 5)),)
to_column((InlineRadios('tipo_texto'), 5)),)
fields.append(to_column((
'texto_original', 7 if self.texto_articulado_proposicao else 12)))

21
sapl/materia/migrations/0070_auto_20161111_1301.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-11-11 13:01
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('materia', '0069_tipoproposicao_perfis'),
]
operations = [
migrations.AlterField(
model_name='tipoproposicao',
name='perfis',
field=models.ManyToManyField(blank=True, help_text='\n Mesmo que em Configurações da Aplicação nas\n Tabelas Auxiliares esteja definido que Proposições possam\n utilizar Textos Articulados, ao gerar uma proposição,\n a solução de Textos Articulados será disponibilizada se\n o Tipo escolhido para a Proposição estiver associado a ao\n menos um Perfil Estrutural de Texto Articulado.\n ',
to='compilacao.PerfilEstruturalTextoArticulado', verbose_name='Perfis Estruturais de Textos Articulados'),
),
]

2
sapl/materia/models.py

@ -47,7 +47,7 @@ class TipoProposicao(models.Model):
Tabelas Auxiliares esteja definido que Proposições possam
utilizar Textos Articulados, ao gerar uma proposição,
a solução de Textos Articulados será disponibilizada se
o Tipo escolhido para a Proposição estiver associada a ao
o Tipo escolhido para a Proposição estiver associado a ao
menos um Perfil Estrutural de Texto Articulado.
"""))

2
sapl/templates/materia/layouts.yaml

@ -75,7 +75,7 @@ Relatoria:
TipoProposicao:
{% trans 'Tipo Proposição' %}:
- descricao content_type
- tipo_conteudo_related
- tipo_conteudo_related perfis
Proposicao:
{% trans 'Proposição' %}:

Loading…
Cancel
Save