From beb4fa70b66597004125da09305edee6214aba9b Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Tue, 25 Oct 2016 16:32:15 -0200 Subject: [PATCH] Fix #761 --- sapl/materia/forms.py | 36 +++++++++---------- .../migrations/0067_auto_20161025_1630.py | 24 +++++++++++++ sapl/materia/models.py | 8 ++--- sapl/materia/views.py | 3 +- sapl/templates/materia/layouts.yaml | 2 +- .../materia/tipoproposicao_form.html | 4 +-- 6 files changed, 51 insertions(+), 26 deletions(-) create mode 100644 sapl/materia/migrations/0067_auto_20161025_1630.py diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index e3a31107a..ebb3ab215 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -778,9 +778,9 @@ class TramitacaoEmLoteFilterSet(django_filters.FilterSet): class TipoProposicaoForm(ModelForm): - conteudo = forms.ModelChoiceField( + content_type = forms.ModelChoiceField( queryset=ContentType.objects.all(), - label=TipoProposicao._meta.get_field('conteudo').verbose_name, + label=TipoProposicao._meta.get_field('content_type').verbose_name, required=True) tipo_conteudo_related_radio = ChoiceWithoutValidationField( @@ -795,7 +795,7 @@ class TipoProposicaoForm(ModelForm): class Meta: model = TipoProposicao fields = ['descricao', - 'conteudo', + 'content_type', 'tipo_conteudo_related_radio', 'tipo_conteudo_related'] @@ -805,7 +805,7 @@ class TipoProposicaoForm(ModelForm): tipo_select = Fieldset(TipoProposicao._meta.verbose_name, to_column(('descricao', 5)), - to_column(('conteudo', 7)), + to_column(('content_type', 7)), to_column(('tipo_conteudo_related_radio', 12))) self.helper = FormHelper() @@ -816,9 +816,9 @@ class TipoProposicaoForm(ModelForm): content_types = ContentType.objects.get_for_models( *models_with_gr_for_model(TipoProposicao)) - self.fields['conteudo'].choices = [ + self.fields['content_type'].choices = [ (ct.pk, ct) for k, ct in content_types.items()] - self.fields['conteudo'].choices.sort(key=lambda x: str(x[1])) + self.fields['content_type'].choices.sort(key=lambda x: str(x[1])) if self.instance.pk: self.fields[ @@ -827,17 +827,17 @@ class TipoProposicaoForm(ModelForm): def clean(self): cd = self.cleaned_data - conteudo = cd['conteudo'] + content_type = cd['content_type'] if 'tipo_conteudo_related' not in cd or not cd['tipo_conteudo_related']: raise ValidationError( _('Seleção de Tipo não definida')) - if not conteudo.model_class().objects.filter( + if not content_type.model_class().objects.filter( pk=cd['tipo_conteudo_related']).exists(): raise ValidationError( _('O Registro definido (%s) não está na base de %s.' - ) % (cd['tipo_conteudo_related'], cd['q'], conteudo)) + ) % (cd['tipo_conteudo_related'], cd['q'], content_type)) return self.cleaned_data @@ -846,10 +846,10 @@ class TipoProposicaoForm(ModelForm): tipo_proposicao = super(TipoProposicaoForm, self).save(commit) - assert tipo_proposicao.conteudo + assert tipo_proposicao.content_type tipo_proposicao.tipo_conteudo_related = \ - tipo_proposicao.conteudo.model_class( + tipo_proposicao.content_type.model_class( ).objects.get(pk=self.cleaned_data['tipo_conteudo_related']) tipo_proposicao.save() @@ -1090,7 +1090,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): 'sem anexação se for possível para esta ' 'Proposição. Não sendo, a rotina de incorporação ' 'não permitirá estes campos serem vazios.' - ) % self.instance.tipo.conteudo, + ) % self.instance.tipo.content_type, css_class="alert-info", dismiss=False), 5)), to_column( @@ -1141,14 +1141,14 @@ class ConfirmarProposicaoForm(ProposicaoForm): if 'incorporar' in self.data: cd = ProposicaoForm.clean(self) - if self.instance.tipo.conteudo.model_class() ==\ + if self.instance.tipo.content_type.model_class() ==\ TipoMateriaLegislativa: if 'regime_tramitacao' not in cd or\ not cd['regime_tramitacao']: raise ValidationError( _('Regimente de Tramitação deve ser informado.')) - elif self.instance.tipo.conteudo.model_class() == TipoDocumento\ + elif self.instance.tipo.content_type.model_class() == TipoDocumento\ and not cd['materia_de_vinculo']: raise ValidationError( @@ -1216,7 +1216,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): proposicao = self.instance conteudo_gerado = None - if self.instance.tipo.conteudo.model_class() == TipoMateriaLegislativa: + if self.instance.tipo.content_type.model_class() == TipoMateriaLegislativa: numero__max = MateriaLegislativa.objects.filter( tipo=proposicao.tipo.tipo_conteudo_related, ano=datetime.now().year).aggregate(Max('numero')) @@ -1269,7 +1269,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): 'sapl.materia:materialegislativa_detail', kwargs={'pk': materia.pk}) - elif self.instance.tipo.conteudo.model_class() == TipoDocumento: + elif self.instance.tipo.content_type.model_class() == TipoDocumento: # dados básicos doc = DocumentoAcessorio() @@ -1349,9 +1349,9 @@ class ConfirmarProposicaoForm(ProposicaoForm): protocolo.numero_paginas = cd['numero_de_paginas'] protocolo.anulado = False - if self.instance.tipo.conteudo.model_class() == TipoMateriaLegislativa: + if self.instance.tipo.content_type.model_class() == TipoMateriaLegislativa: protocolo.tipo_materia = proposicao.tipo.tipo_conteudo_related - elif self.instance.tipo.conteudo.model_class() == TipoDocumento: + elif self.instance.tipo.content_type.model_class() == TipoDocumento: protocolo.tipo_documento = proposicao.tipo.tipo_conteudo_related protocolo.save() diff --git a/sapl/materia/migrations/0067_auto_20161025_1630.py b/sapl/materia/migrations/0067_auto_20161025_1630.py new file mode 100644 index 000000000..93e8eac0c --- /dev/null +++ b/sapl/materia/migrations/0067_auto_20161025_1630.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-10-25 16:30 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0066_proposicao_ano'), + ] + + operations = [ + migrations.RenameField( + model_name='tipoproposicao', + old_name='conteudo', + new_name='content_type', + ), + migrations.AlterUniqueTogether( + name='tipoproposicao', + unique_together=set([('content_type', 'object_id')]), + ), + ] diff --git a/sapl/materia/models.py b/sapl/materia/models.py index e064b6f02..32d8fb486 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -36,12 +36,12 @@ class TipoProposicao(models.Model): # FIXME - para a rotina de migração - estes campos mudaram # retire o comentário quando resolver - conteudo = models.ForeignKey(ContentType, default=None, - verbose_name=_('Definição de Tipo')) + content_type = models.ForeignKey(ContentType, default=None, + verbose_name=_('Definição de Tipo')) object_id = models.PositiveIntegerField( blank=True, null=True, default=None) tipo_conteudo_related = SaplGenericForeignKey( - 'conteudo', 'object_id', verbose_name=_('Seleção de Tipo')) + '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) @@ -60,7 +60,7 @@ class TipoProposicao(models.Model): class Meta: verbose_name = _('Tipo de Proposição') verbose_name_plural = _('Tipos de Proposições') - unique_together = (('conteudo', 'object_id'), ) + unique_together = (('content_type', 'object_id'), ) def __str__(self): return self.descricao diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 5773e8861..3fc9c8048 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -138,7 +138,8 @@ class TipoProposicaoCrud(CrudAux): help_text = 'tipo_proposicao' class BaseMixin(CrudAux.BaseMixin): - list_field_names = ["descricao", "conteudo", 'tipo_conteudo_related'] + list_field_names = [ + "descricao", "content_type", 'tipo_conteudo_related'] class CreateView(CrudAux.CreateView): form_class = TipoProposicaoForm diff --git a/sapl/templates/materia/layouts.yaml b/sapl/templates/materia/layouts.yaml index a5070ef86..d1c5f7911 100644 --- a/sapl/templates/materia/layouts.yaml +++ b/sapl/templates/materia/layouts.yaml @@ -74,7 +74,7 @@ Relatoria: TipoProposicao: {% trans 'Tipo Proposição' %}: - - descricao conteudo + - descricao content_type - tipo_conteudo_related Proposicao: diff --git a/sapl/templates/materia/tipoproposicao_form.html b/sapl/templates/materia/tipoproposicao_form.html index 5168cb29a..a19814e4e 100644 --- a/sapl/templates/materia/tipoproposicao_form.html +++ b/sapl/templates/materia/tipoproposicao_form.html @@ -8,7 +8,7 @@ aaa $(document).ready(function(){ var initial_select = $("input[name=tipo_conteudo_related]").val(); $("input[name=tipo_conteudo_related]").remove(); - $('#id_conteudo').change(function(event) { + $('#id_content_type').change(function(event) { var pk = this[event.target.selectedIndex].value; var url = '{% url 'sapl.api:model_list' 0 ''%}' url = url.replace('0', pk) + '?pagination=False' @@ -27,7 +27,7 @@ $(document).ready(function(){ }); }); - $('#id_conteudo').trigger('change'); + $('#id_content_type').trigger('change'); $("#div_id_tipo_conteudo_related_radio .controls").addClass('controls-radio-checkbox'); });