Browse Source

fix #2107 (#2109)

* fix #2107

* HOT-FIX: corrige erros no form

* HOT-FIX: adequa teste

* HOT-FIX: tira possibilidade de charfield ser null
pull/2124/head
Victor Fabre 7 years ago
committed by Edward
parent
commit
bc77952ed3
  1. 61
      sapl/audiencia/forms.py
  2. 20
      sapl/audiencia/migrations/0005_auto_20180806_1236.py
  3. 20
      sapl/audiencia/migrations/0006_auto_20180808_0856.py
  4. 2
      sapl/audiencia/models.py
  5. 6
      sapl/audiencia/tests/test_audiencia.py
  6. 4
      sapl/audiencia/views.py

61
sapl/audiencia/forms.py

@ -16,18 +16,21 @@ class AudienciaForm(forms.ModelForm):
tipo_materia = forms.ModelChoiceField(
label=_('Tipo Matéria'),
required=True,
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
)
numero_materia = forms.CharField(
label='Número Matéria', required=True)
label='Número Matéria', required=False)
ano_materia = forms.CharField(
label='Ano Matéria',
initial=int(data_atual.year),
required=True)
required=False)
materia = forms.ModelChoiceField(required=False,
widget=forms.HiddenInput(),
queryset=MateriaLegislativa.objects.all())
class Meta:
model = AudienciaPublica
@ -36,7 +39,7 @@ class AudienciaForm(forms.ModelForm):
'observacao', 'audiencia_cancelada', 'url_audio',
'url_video', 'upload_pauta', 'upload_ata',
'upload_anexo', 'tipo_materia', 'numero_materia',
'ano_materia']
'ano_materia', 'materia']
def __init__(self, **kwargs):
@ -59,17 +62,38 @@ class AudienciaForm(forms.ModelForm):
if not self.is_valid():
return cleaned_data
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)
materia = cleaned_data['numero_materia']
ano_materia = cleaned_data['ano_materia']
tipo_materia = cleaned_data['tipo_materia']
if materia and ano_materia and tipo_materia:
try:
materia = MateriaLegislativa.objects.get(
numero=materia,
ano=ano_materia,
tipo=tipo_materia)
except ObjectDoesNotExist:
msg = _('A matéria %s%s/%s não existe no cadastro'
' de matérias legislativas.' % (tipo_materia, materia, ano_materia))
raise ValidationError(msg)
else:
cleaned_data['materia'] = materia
else:
cleaned_data['materia'] = materia
campos = [materia, tipo_materia, ano_materia]
if campos.count(None) + campos.count('') < len(campos):
msg = _('Preencha todos os campos relacionados à Matéria Legislativa')
raise ValidationError(msg)
if not cleaned_data['numero']:
ultima_audiencia = AudienciaPublica.objects.all().order_by('numero').last()
if ultima_audiencia:
cleaned_data['numero'] = ultima_audiencia.numero + 1
else:
cleaned_data['numero'] = 1
if self.cleaned_data['hora_inicio'] and self.cleaned_data['hora_fim']:
if (self.cleaned_data['hora_fim'] <
@ -78,10 +102,3 @@ class AudienciaForm(forms.ModelForm):
raise ValidationError(msg)
return cleaned_data
@transaction.atomic()
def save(self, commit=True):
audiencia = super(AudienciaForm, self).save(False)
audiencia.materia = self.cleaned_data['materia']
audiencia.save()
return audiencia

20
sapl/audiencia/migrations/0005_auto_20180806_1236.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-08-06 15:36
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('audiencia', '0004_auto_20180305_1006'),
]
operations = [
migrations.AlterField(
model_name='audienciapublica',
name='hora_fim',
field=models.CharField(blank=True, max_length=5, null=True, verbose_name='Horário Fim(hh:mm)'),
),
]

20
sapl/audiencia/migrations/0006_auto_20180808_0856.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-08-08 11:56
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('audiencia', '0005_auto_20180806_1236'),
]
operations = [
migrations.AlterField(
model_name='audienciapublica',
name='hora_fim',
field=models.CharField(blank=True, max_length=5, verbose_name='Horário Fim(hh:mm)'),
),
]

2
sapl/audiencia/models.py

@ -71,7 +71,7 @@ class AudienciaPublica(models.Model):
hora_inicio = models.CharField(
max_length=5, verbose_name=_('Horário Início(hh:mm)'))
hora_fim = models.CharField(
max_length=5, verbose_name=_('Horário Fim(hh:mm)'))
max_length=5, blank=True, verbose_name=_('Horário Fim(hh:mm)'))
observacao = models.TextField(
max_length=500, blank=True, verbose_name=_('Observação'))
audiencia_cancelada = models.BooleanField(

6
sapl/audiencia/tests/test_audiencia.py

@ -15,11 +15,7 @@ def test_valida_campos_obrigatorios_audiencia_form():
assert errors['nome'] == [_('Este campo é obrigatório.')]
assert errors['tema'] == [_('Este campo é obrigatório.')]
assert errors['tipo'] == [_('Este campo é obrigatório.')]
assert errors['tipo_materia'] == [_('Este campo é obrigatório.')]
assert errors['numero_materia'] == [_('Este campo é obrigatório.')]
assert errors['ano_materia'] == [_('Este campo é obrigatório.')]
assert errors['data'] == [_('Este campo é obrigatório.')]
assert errors['hora_inicio'] == [_('Este campo é obrigatório.')]
assert errors['hora_fim'] == [_('Este campo é obrigatório.')]
assert len(errors) == 9
assert len(errors) == 5

4
sapl/audiencia/views.py

@ -6,15 +6,17 @@ from sapl.crud.base import RP_DETAIL, RP_LIST, Crud
from .forms import AudienciaForm
from .models import AudienciaPublica
def index(request):
return HttpResponse("Audiência Pública")
class AudienciaCrud(Crud):
model = AudienciaPublica
public = [RP_LIST, RP_DETAIL, ]
class BaseMixin(Crud.BaseMixin):
list_field_names = ['materia', 'tipo', 'numero', 'nome',
list_field_names = ['numero', 'nome', 'tipo', 'materia',
'data']
ordering = 'nome', 'numero', 'tipo', 'data'

Loading…
Cancel
Save