Browse Source

Add disponibilidade de perfis para TipoProposicao

pull/797/head
LeandroRoberto 8 years ago
parent
commit
b4e87d1a1f
  1. 19
      sapl/materia/forms.py
  2. 21
      sapl/materia/migrations/0069_tipoproposicao_perfis.py
  3. 27
      sapl/materia/models.py
  4. 6
      sapl/templates/materia/tipoproposicao_form.html

19
sapl/materia/forms.py

@ -22,7 +22,8 @@ import django_filters
from sapl.base.models import Autor from sapl.base.models import Autor
from sapl.comissoes.models import Comissao from sapl.comissoes.models import Comissao
from sapl.compilacao.models import STATUS_TA_PRIVATE,\ 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, from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column,
to_row) to_row)
from sapl.materia.models import TipoProposicao, MateriaLegislativa,\ from sapl.materia.models import TipoProposicao, MateriaLegislativa,\
@ -747,16 +748,20 @@ class TipoProposicaoForm(ModelForm):
fields = ['descricao', fields = ['descricao',
'content_type', 'content_type',
'tipo_conteudo_related_radio', '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): def __init__(self, *args, **kwargs):
tipo_select = Fieldset(TipoProposicao._meta.verbose_name, tipo_select = Fieldset(TipoProposicao._meta.verbose_name,
to_column(('descricao', 5)), to_column(('descricao', 5)),
to_column(('content_type', 7)), 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 = FormHelper()
self.helper.layout = SaplFormLayout(tipo_select) self.helper.layout = SaplFormLayout(tipo_select)
@ -795,7 +800,7 @@ class TipoProposicaoForm(ModelForm):
@transaction.atomic @transaction.atomic
def save(self, commit=False): def save(self, commit=False):
tipo_proposicao = super(TipoProposicaoForm, self).save(commit) tipo_proposicao = self.instance
assert tipo_proposicao.content_type assert tipo_proposicao.content_type
@ -803,9 +808,7 @@ class TipoProposicaoForm(ModelForm):
tipo_proposicao.content_type.model_class( tipo_proposicao.content_type.model_class(
).objects.get(pk=self.cleaned_data['tipo_conteudo_related']) ).objects.get(pk=self.cleaned_data['tipo_conteudo_related'])
tipo_proposicao.save() return super().save(True)
return tipo_proposicao
class ProposicaoForm(forms.ModelForm): class ProposicaoForm(forms.ModelForm):

21
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'),
),
]

27
sapl/materia/models.py

@ -8,7 +8,8 @@ from model_utils import Choices
from sapl.base.models import Autor from sapl.base.models import Autor
from sapl.comissoes.models import Comissao 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.parlamentares.models import Parlamentar
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, SaplGenericForeignKey, from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, SaplGenericForeignKey,
SaplGenericRelation, restringe_tipos_de_arquivo_txt, SaplGenericRelation, restringe_tipos_de_arquivo_txt,
@ -38,19 +39,17 @@ class TipoProposicao(models.Model):
tipo_conteudo_related = SaplGenericForeignKey( tipo_conteudo_related = SaplGenericForeignKey(
'content_type', 'object_id', verbose_name=_('Seleção de Tipo')) 'content_type', 'object_id', verbose_name=_('Seleção de Tipo'))
"""materia_ou_documento = models.CharField( perfis = models.ManyToManyField(
max_length=1, verbose_name=_('Gera'), choices=MAT_OU_DOC_CHOICES) PerfilEstruturalTextoArticulado,
modelo = models.CharField(max_length=50, verbose_name=_('Modelo XML')) blank=True, verbose_name=_('Perfis Estruturais de Textos Articulados'),
help_text=_("""
# mutually exclusive (depend on materia_ou_documento) Mesmo que em Configurações da Aplicação nas
tipo_materia = models.ForeignKey( Tabelas Auxiliares esteja definido que Proposições possam
TipoMateriaLegislativa, utilizar Textos Articulados, ao gerar uma proposição,
blank=True, a solução de Textos Articulados será disponibilizada se
null=True, o Tipo escolhido para a Proposição estiver associada a ao
verbose_name=_('Tipo de Matéria')) menos um Perfil Estrutural de Texto Articulado.
tipo_documento = models.ForeignKey( """))
TipoDocumento, blank=True, null=True,
verbose_name=_('Tipo de Documento'))"""
class Meta: class Meta:
verbose_name = _('Tipo de Proposição') verbose_name = _('Tipo de Proposição')

6
sapl/templates/materia/tipoproposicao_form.html

@ -6,7 +6,7 @@ aaa
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function(){ $(document).ready(function(){
var initial_select = $("input[name=tipo_conteudo_related]").val(); var initial_select = parseInt($("input[name=tipo_conteudo_related]").val());
$("input[name=tipo_conteudo_related]").remove(); $("input[name=tipo_conteudo_related]").remove();
$('#id_content_type').change(function(event) { $('#id_content_type').change(function(event) {
var pk = this[event.target.selectedIndex].value; var pk = this[event.target.selectedIndex].value;
@ -18,8 +18,8 @@ $(document).ready(function(){
data.forEach(function (val, index) { data.forEach(function (val, index) {
var html_radio = '<div class="radio'+(initial_select==val.value?' checked':'')+'"> <label><span class="icons"><span class="first-icon"></span><span class="second-icon"></span></span><input type="radio" name="tipo_conteudo_related" id="id_tipo_conteudo_related_'+index+'" value="'+val.value+'"'+(initial_select?' checked="checked"':'')+' style="display:none;">'+val.text+'</label></div>'; var html_radio = '<div class="radio'+(initial_select==val.value?' checked':'')+'"> <label><span class="icons"><span class="first-icon"></span><span class="second-icon"></span></span><input type="radio" name="tipo_conteudo_related" id="id_tipo_conteudo_related_'+index+'" value="'+val.value+'"'+(initial_select?' checked="checked"':'')+' style="display:none;">'+val.text+'</label></div>';
if (val === initial_select) if (val.value === initial_select)
initial_select=''; initial_select=0;
radios.append(html_radio); radios.append(html_radio);
}); });
}); });

Loading…
Cancel
Save