From 139ce9bc4752a85f18efcf9b166715337844fb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Sconetto?= Date: Tue, 6 Mar 2018 18:15:06 -0300 Subject: [PATCH] =?UTF-8?q?Adi=C3=A7=C3=A3o=20de=20mat=C3=A9ria=20por=20me?= =?UTF-8?q?io=20de=20dados=20chave?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/audiencia/forms.py | 35 ++++++++++++++++++++++++--- sapl/templates/audiencia/layouts.yaml | 17 +++++++------ 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/sapl/audiencia/forms.py b/sapl/audiencia/forms.py index 16536bde6..87bfeec4a 100644 --- a/sapl/audiencia/forms.py +++ b/sapl/audiencia/forms.py @@ -3,17 +3,31 @@ from django.core.exceptions import ValidationError from django.db import transaction from django.utils.translation import ugettext_lazy as _ from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica -from sapl.materia.models import MateriaLegislativa +from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa +from sapl.utils import timezone class AudienciaForm(forms.ModelForm): - materia = forms.ModelChoiceField(required=False, - queryset=MateriaLegislativa.objects.all().select_related( - "tipo").order_by('tipo', '-ano', 'numero')) + data_atual = timezone.now() tipo = forms.ModelChoiceField(required=True, + label='Tipo de Audiência Pública', queryset=TipoAudienciaPublica.objects.all().order_by('nome')) + tipo_materia = forms.ModelChoiceField( + label=_('Tipo Matéria'), + required=True, + queryset=TipoMateriaLegislativa.objects.all(), + empty_label='Selecione', + ) + + numero_materia = forms.CharField( + label='Número Matéria', required=True) + + ano_materia = forms.CharField( + label='Ano Matéria', + initial=int(data_atual.year), + required=True) class Meta: model = AudienciaPublica @@ -37,6 +51,19 @@ class AudienciaForm(forms.ModelForm): def clean(self): super(AudienciaForm, self).clean() + + try: + materia = MateriaLegislativa.objects.get( + numero=self.cleaned_data['numero_materia'], + ano=self.cleaned_data['ano_materia'], + tipo=self.cleaned_data['tipo_materia']) + except ObjectDoesNotExist: + msg = _('A matéria a ser inclusa não existe no cadastro' + ' de matérias legislativas.') + raise ValidationError(msg) + else: + cleaned_data['materia'] = materia + if self.cleaned_data['hora_inicio'] and self.cleaned_data['hora_fim']: if (self.cleaned_data['hora_fim'] < self.cleaned_data['hora_inicio']): diff --git a/sapl/templates/audiencia/layouts.yaml b/sapl/templates/audiencia/layouts.yaml index 3a6a460ee..ed1e24738 100644 --- a/sapl/templates/audiencia/layouts.yaml +++ b/sapl/templates/audiencia/layouts.yaml @@ -1,11 +1,12 @@ {% load i18n %} AudienciaPublica: {% trans 'Audiência Pública' %}: - - nome:10 numero - - tema - - materia tipo - - data hora_inicio hora_fim - - url_audio url_video - - upload_pauta upload_ata upload_anexo - - observacao - - audiencia_cancelada + - nome:10 numero + - tema + {% trans 'Dados' %}: + - tipo_materia numero_materia ano_materia + - tipo:4 data:2 hora_inicio:3 hora_fim:3 + - url_audio url_video + - upload_pauta upload_ata upload_anexo + - observacao + - audiencia_cancelada