Browse Source

Fix #761

pull/772/head
LeandroRoberto 8 years ago
parent
commit
beb4fa70b6
  1. 36
      sapl/materia/forms.py
  2. 24
      sapl/materia/migrations/0067_auto_20161025_1630.py
  3. 8
      sapl/materia/models.py
  4. 3
      sapl/materia/views.py
  5. 2
      sapl/templates/materia/layouts.yaml
  6. 4
      sapl/templates/materia/tipoproposicao_form.html

36
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()

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

8
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

3
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

2
sapl/templates/materia/layouts.yaml

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

4
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');
});

Loading…
Cancel
Save