Repository: interlegis/sapl

Issue:
Validar datas de Legislaturas (tabelas Auxiliares)
1. Faltando validação entre datas. A data de Início deve ser MENOR que a de Término do período. A data da eleição também deve ser MENOR que a de início do período.



Discussion:
1. O Menu mostrado na parte superior direita é indevido, portanto, não deve constar.

A questão do menu será resolvido por #387 


Resolving patch:
diff --git a/materia/forms.py b/materia/forms.py
--- a/materia/forms.py
+++ b/materia/forms.py
@@ -42,7 +42,7 @@ def clean(self):
         cleaned_data = self.cleaned_data
 
         for key in list(cleaned_data.keys()):
-            if cleaned_data[key] == None:
+            if cleaned_data[key] is None:
                 del cleaned_data[key]
 
         if len(cleaned_data) != 1:
diff --git a/parlamentares/forms.py b/parlamentares/forms.py
--- a/parlamentares/forms.py
+++ b/parlamentares/forms.py
@@ -17,6 +17,25 @@ class ImageThumbnailFileInput(ClearableFileInput):
     template_name = 'floppyforms/image_thumbnail.html'
 
 
+class LegislaturaForm(ModelForm):
+    class Meta:
+        model = Legislatura
+        exclude = []
+
+    def clean(self):
+        cleaned_data = self.cleaned_data
+        data_inicio = cleaned_data['data_inicio']
+        data_fim = cleaned_data['data_fim']
+        data_eleicao = cleaned_data['data_eleicao']
+
+        if data_inicio >= data_fim or data_eleicao >= data_inicio:
+            raise ValidationError(_('A data início deve ser menor que a data \
+                                    fim, e a data eleição deve ser menor que\
+                                    a data início'))
+
+        return cleaned_data
+
+
 class ParlamentarForm(ModelForm):
 
     class Meta:
diff --git a/parlamentares/views.py b/parlamentares/views.py
--- a/parlamentares/views.py
+++ b/parlamentares/views.py
@@ -10,14 +10,15 @@
 from crud.base import Crud
 from crud.masterdetail import MasterDetailCrud
 
-from .forms import FiliacaoForm, ParlamentarCreateForm, ParlamentarForm
+from .forms import (FiliacaoForm, LegislaturaForm,
+                    ParlamentarCreateForm, ParlamentarForm)
 from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente,
                      Filiacao, Legislatura, Mandato, NivelInstrucao,
                      Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar,
                      TipoAfastamento, TipoDependente)
 
 CargoMesaCrud = Crud.build(CargoMesa, 'cargo_mesa')
-LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura')
+# LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura')
 ColigacaoCrud = Crud.build(Coligacao, 'coligacao')
 PartidoCrud = Crud.build(Partido, 'partidos')
 SessaoLegislativaCrud = Crud.build(SessaoLegislativa, 'sessao_legislativa')
@@ -38,6 +39,17 @@ class ListView(MasterDetailCrud.ListView):
         ordering = ('-legislatura__data_inicio')
 
 
+class LegislaturaCrud(Crud):
+    model = Legislatura
+    help_path = 'tabelas_auxiliares#legislatura'
+
+    class CreateView(crud.base.CrudCreateView):
+        form_class = LegislaturaForm
+
+    class UpdateView(crud.base.CrudUpdateView):
+        form_class = LegislaturaForm
+
+
 class FiliacaoCrud(MasterDetailCrud):
     model = Filiacao
     parent_field = 'parlamentar'


Test patch: