Browse Source

Fix #1436

-Adiciona teste ao form de materia
-Corrige alguns erros
pull/1469/head
Mariana Mendes 8 years ago
parent
commit
944c986b23
  1. 24
      sapl/materia/forms.py
  2. 66
      sapl/materia/tests/test_materia_form.py
  3. 24
      sapl/materia/views.py

24
sapl/materia/forms.py

@ -1714,25 +1714,17 @@ class FichaPesquisaForm(forms.Form):
)
def clean(self):
cleaned_data = self.cleaned_data
# Verifica se algum campo de data foi preenchido
if cleaned_data['data_inicial'] or cleaned_data['data_final']:
# Então verifica se o usuário preencheu o Incial e mas não
# preencheu o Final, ou vice-versa
if (not cleaned_data['data_inicial'] or
not cleaned_data['data_final']):
raise ValidationError(_(
'Caso pesquise por data, os campos de Data Incial e ' +
'Data Final devem ser preenchidos obrigatoriamente'))
# Caso tenha preenchido, verifica se a data final é maior que
# a inicial
elif cleaned_data['data_final'] < cleaned_data['data_inicial']:
raise ValidationError(_(
'A Data Final não pode ser menor que a Data Inicial'))
cleaned_data = super(FichaPesquisaForm, self).clean()
if not self.is_valid():
return cleaned_data
if cleaned_data['data_final'] < cleaned_data['data_inicial']:
raise ValidationError(_(
'A Data Final não pode ser menor que a Data Inicial'))
return cleaned_data
class FichaSelecionaForm(forms.Form):
materia = forms.ModelChoiceField(

66
sapl/materia/tests/test_materia_form.py

@ -0,0 +1,66 @@
import pytest
from django.utils.translation import ugettext as _
from model_mommy import mommy
from sapl.materia import forms
from sapl.materia.models import (MateriaLegislativa, TipoMateriaLegislativa)
@pytest.mark.django_db(transaction=False)
def test_valida_campos_obrigatorios_ficha_pesquisa_form():
form = forms.FichaPesquisaForm(data={})
assert not form.is_valid()
errors = form.errors
assert errors['tipo_materia'] == [_('Este campo é obrigatório.')]
assert errors['data_inicial'] == [_('Este campo é obrigatório.')]
assert errors['data_final'] == [_('Este campo é obrigatório.')]
assert len(errors) == 3
@pytest.mark.django_db(transaction=False)
def test_ficha_pesquisa_form_datas_invalidas():
tipo = mommy.make(TipoMateriaLegislativa)
form = forms.FichaPesquisaForm(data={'tipo_materia': str(tipo.pk),
'data_inicial': '10/11/2017',
'data_final': '09/11/2017'
})
assert not form.is_valid()
assert form.errors['__all__'] == [_('A Data Final não pode ser menor que '
'a Data Inicial')]
@pytest.mark.django_db(transaction=False)
def test_ficha_pesquisa_form_invalido():
tipo = mommy.make(TipoMateriaLegislativa)
form = forms.FichaPesquisaForm(data={'tipo_materia': str(tipo.pk),
'data_inicial': '10/11/2017',
'data_final': '09/11/2017'
})
assert not form.is_valid()
@pytest.mark.django_db(transaction=False)
def test_valida_campos_obrigatorios_ficha_seleciona_form():
form = forms.FichaSelecionaForm(data={})
assert not form.is_valid()
errors = form.errors
assert errors['materia'] == [_('Este campo é obrigatório.')]
assert len(errors) == 1
@pytest.mark.django_db(transaction=False)
def test_ficha_seleciona_form_valido():
materia = mommy.make(MateriaLegislativa)
form = forms.FichaSelecionaForm(data={'materia': str(materia.pk)})
assert form.is_valid()

24
sapl/materia/views.py

@ -1822,12 +1822,6 @@ class FichaSelecionaView(PermissionRequiredMixin, FormView):
template_name = 'materia/impressos/ficha_seleciona.html'
permission_required = ('materia.can_access_impressos', )
def string_to_datetime(self, date):
return dt_generator.date(
day=int(date[0]),
month=int(date[1]),
year=int(date[2]))
def get_context_data(self, **kwargs):
if ('tipo' not in self.request.GET or
'data_inicial' not in self.request.GET or
@ -1839,13 +1833,10 @@ class FichaSelecionaView(PermissionRequiredMixin, FormView):
**kwargs)
tipo = self.request.GET['tipo']
data_inicial = self.request.GET['data_inicial']
data_final = self.request.GET['data_final']
data_inicial = self.string_to_datetime(
data_inicial.split('/'))
data_final = self.string_to_datetime(
data_final.split('/'))
data_inicial = datetime.strptime(
self.request.GET['data_inicial'], "%d/%m/%Y").date()
data_final = datetime.strptime(
self.request.GET['data_final'], "%d/%m/%Y").date()
materia_list = MateriaLegislativa.objects.filter(
tipo=tipo,
@ -1853,7 +1844,7 @@ class FichaSelecionaView(PermissionRequiredMixin, FormView):
context['quantidade'] = len(materia_list)
materia_list = materia_list[:20]
context['form'].fields['materia'].choices = [(m.id, m.__str__()) for m in materia_list]
context['form'].fields['materia'].choices = [(m.id, str(m)) for m in materia_list]
if context['quantidade'] > 20:
messages.info(self.request, _('Sua pesquisa retornou mais do que '
@ -1870,7 +1861,10 @@ class FichaSelecionaView(PermissionRequiredMixin, FormView):
materia = MateriaLegislativa.objects.get(
id=form.data['materia'])
except ObjectDoesNotExist:
pass
mensagem = _('Esta Máteria não existe!')
self.messages.add_message(request, messages.INFO, mensagem)
return self.render_to_response(context)
context['materia'] = materia
context['despachos'] = materia.despachoinicial_set.all().values_list(

Loading…
Cancel
Save