From b4e87d1a1fddb74adcb0041c617101965f8ff692 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Fri, 11 Nov 2016 11:01:00 -0200 Subject: [PATCH] Add disponibilidade de perfis para TipoProposicao --- sapl/materia/forms.py | 19 +++++++------ .../migrations/0069_tipoproposicao_perfis.py | 21 +++++++++++++++ sapl/materia/models.py | 27 +++++++++---------- .../materia/tipoproposicao_form.html | 6 ++--- 4 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 sapl/materia/migrations/0069_tipoproposicao_perfis.py diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index e6c6f1260..f9f8ad7c1 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -22,7 +22,8 @@ import django_filters from sapl.base.models import Autor from sapl.comissoes.models import Comissao from sapl.compilacao.models import STATUS_TA_PRIVATE,\ - STATUS_TA_IMMUTABLE_PUBLIC, TextoArticulado, STATUS_TA_PUBLIC + STATUS_TA_IMMUTABLE_PUBLIC, TextoArticulado, STATUS_TA_PUBLIC,\ + PerfilEstruturalTextoArticulado from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column, to_row) from sapl.materia.models import TipoProposicao, MateriaLegislativa,\ @@ -747,16 +748,20 @@ class TipoProposicaoForm(ModelForm): fields = ['descricao', 'content_type', 'tipo_conteudo_related_radio', - 'tipo_conteudo_related'] + 'tipo_conteudo_related', + 'perfis'] - widgets = {'tipo_conteudo_related': forms.HiddenInput()} + widgets = {'tipo_conteudo_related': forms.HiddenInput(), + 'perfis': widgets.CheckboxSelectMultiple()} def __init__(self, *args, **kwargs): tipo_select = Fieldset(TipoProposicao._meta.verbose_name, to_column(('descricao', 5)), to_column(('content_type', 7)), - to_column(('tipo_conteudo_related_radio', 12))) + to_column(('tipo_conteudo_related_radio', 6)), + + to_column(('perfis', 6))) self.helper = FormHelper() self.helper.layout = SaplFormLayout(tipo_select) @@ -795,7 +800,7 @@ class TipoProposicaoForm(ModelForm): @transaction.atomic def save(self, commit=False): - tipo_proposicao = super(TipoProposicaoForm, self).save(commit) + tipo_proposicao = self.instance assert tipo_proposicao.content_type @@ -803,9 +808,7 @@ class TipoProposicaoForm(ModelForm): tipo_proposicao.content_type.model_class( ).objects.get(pk=self.cleaned_data['tipo_conteudo_related']) - tipo_proposicao.save() - - return tipo_proposicao + return super().save(True) class ProposicaoForm(forms.ModelForm): diff --git a/sapl/materia/migrations/0069_tipoproposicao_perfis.py b/sapl/materia/migrations/0069_tipoproposicao_perfis.py new file mode 100644 index 000000000..e6bcb3076 --- /dev/null +++ b/sapl/materia/migrations/0069_tipoproposicao_perfis.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-11-11 10:05 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('compilacao', '0069_auto_20161107_1932'), + ('materia', '0068_auto_20161110_0910'), + ] + + operations = [ + migrations.AddField( + model_name='tipoproposicao', + name='perfis', + field=models.ManyToManyField(blank=True, to='compilacao.PerfilEstruturalTextoArticulado', verbose_name='Perfis Estruturais de Textos Articulados'), + ), + ] diff --git a/sapl/materia/models.py b/sapl/materia/models.py index 589f039ce..dccdb66e7 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -8,7 +8,8 @@ from model_utils import Choices from sapl.base.models import Autor from sapl.comissoes.models import Comissao -from sapl.compilacao.models import TextoArticulado +from sapl.compilacao.models import TextoArticulado,\ + PerfilEstruturalTextoArticulado from sapl.parlamentares.models import Parlamentar from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, SaplGenericForeignKey, SaplGenericRelation, restringe_tipos_de_arquivo_txt, @@ -38,19 +39,17 @@ class TipoProposicao(models.Model): tipo_conteudo_related = SaplGenericForeignKey( 'content_type', 'object_id', verbose_name=_('Seleção de Tipo')) - """materia_ou_documento = models.CharField( - max_length=1, verbose_name=_('Gera'), choices=MAT_OU_DOC_CHOICES) - modelo = models.CharField(max_length=50, verbose_name=_('Modelo XML')) - - # mutually exclusive (depend on materia_ou_documento) - tipo_materia = models.ForeignKey( - TipoMateriaLegislativa, - blank=True, - null=True, - verbose_name=_('Tipo de Matéria')) - tipo_documento = models.ForeignKey( - TipoDocumento, blank=True, null=True, - verbose_name=_('Tipo de Documento'))""" + perfis = models.ManyToManyField( + PerfilEstruturalTextoArticulado, + blank=True, verbose_name=_('Perfis Estruturais de Textos Articulados'), + help_text=_(""" + Mesmo que em Configurações da Aplicação nas + 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 + menos um Perfil Estrutural de Texto Articulado. + """)) class Meta: verbose_name = _('Tipo de Proposição') diff --git a/sapl/templates/materia/tipoproposicao_form.html b/sapl/templates/materia/tipoproposicao_form.html index ede423c40..25943b466 100644 --- a/sapl/templates/materia/tipoproposicao_form.html +++ b/sapl/templates/materia/tipoproposicao_form.html @@ -6,7 +6,7 @@ aaa