Repository: interlegis/sapl

Issue:
Validação de data de criação de Bancada
A data de criação da bancada deve estar dentro do período da legislatura selecionada.
Validação de data de criação de Bancada
A data de criação da bancada deve estar dentro do período da legislatura selecionada.


Discussion:

Resolving patch:
diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py
--- a/sapl/sessao/forms.py
+++ b/sapl/sessao/forms.py
@@ -112,6 +112,24 @@ def clean(self):
         if not self.is_valid():
             return self.cleaned_data
 
+        data = self.cleaned_data
+
+        legislatura = data['legislatura']
+
+        data_criacao = data['data_criacao']
+        if data_criacao:
+            if (data_criacao < legislatura.data_inicio or
+                    data_criacao > legislatura.data_fim):
+                raise ValidationError(_("Data de criação da bancada fora do intervalo"
+                                        " de legislatura informada"))
+
+        data_extincao = data['data_extincao']
+        if data_extincao:
+            if (data_extincao < legislatura.data_inicio or
+                    data_extincao > legislatura.data_fim):
+                raise ValidationError(_("Data fim da bancada fora do intervalo de"
+                                        " legislatura informada"))
+
         if self.cleaned_data['data_extincao']:
             if (self.cleaned_data['data_extincao'] <
                     self.cleaned_data['data_criacao']):


Test patch:
diff --git a/sapl/sessao/tests/test_sessao.py b/sapl/sessao/tests/test_sessao.py
--- a/sapl/sessao/tests/test_sessao.py
+++ b/sapl/sessao/tests/test_sessao.py
@@ -1,4 +1,5 @@
 import pytest
+from datetime import datetime
 from django.core.exceptions import ValidationError
 from django.utils.translation import ugettext_lazy as _
 from model_mommy import mommy
@@ -87,9 +88,16 @@ def test_valida_campos_obrigatorios_bancada_form():
     assert len(errors) == 3
 
 
+def data(valor):
+    return datetime.strptime(valor, '%Y-%m-%d').date()
+
+
 @pytest.mark.django_db(transaction=False)
 def test_bancada_form_valido():
-    legislatura = mommy.make(Legislatura)
+    legislatura = mommy.make(Legislatura,
+                             data_inicio=data('2017-11-10'),
+                             data_fim=data('2017-12-31'),
+                             )
     partido = mommy.make(Partido)
 
     form = forms.BancadaForm(data={'legislatura': str(legislatura.pk),
@@ -105,7 +113,10 @@ def test_bancada_form_valido():
 
 @pytest.mark.django_db(transaction=False)
 def test_bancada_form_datas_invalidas():
-    legislatura = mommy.make(Legislatura)
+    legislatura = mommy.make(Legislatura,
+                             data_inicio=data('2017-11-10'),
+                             data_fim=data('2017-12-31'),
+                             )
     partido = mommy.make(Partido)
 
     form = forms.BancadaForm(data={'legislatura': str(legislatura.pk),
@@ -116,9 +127,6 @@ def test_bancada_form_datas_invalidas():
                                    'descricao': 'teste'
                                    })
     assert not form.is_valid()
-    assert form.errors['__all__'] == [_('Data de extinção não pode ser menor '
-                                        'que a de criação')]
-
 
 @pytest.mark.django_db(transaction=False)
 def test_expediente_materia_form_valido():