Repository: interlegis/sapl

Issue:
Sessão Legislativa - data fim 
A data fim deve ser maior que a data início.


Discussion:
Ver as datas do intervalo não estão sendo verificadas entre si e entre as de início e fim da sessão legislativa.

Resolving patch:
diff --git a/sapl/base/forms.py b/sapl/base/forms.py
--- a/sapl/base/forms.py
+++ b/sapl/base/forms.py
@@ -18,6 +18,7 @@
 from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column,
                                       to_row)
 from sapl.materia.models import MateriaLegislativa
+from sapl.parlamentares.models import SessaoLegislativa
 from sapl.sessao.models import SessaoPlenaria
 from sapl.settings import MAX_IMAGE_UPLOAD_SIZE
 from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES,
@@ -148,6 +149,35 @@ def clean(self):
         if data['password1'] and data['password1'] != data['password2']:
             raise ValidationError('Senhas informadas são diferentes')
 
+class SessaoLegislativaForm(ModelForm):
+
+    class Meta:
+        model = SessaoLegislativa
+        exclude = []
+
+    def clean(self):
+        cleaned_data = super(SessaoLegislativaForm, self).clean()
+
+        if not self.is_valid():
+            return cleaned_data
+
+        data_inicio = cleaned_data['data_inicio']
+        data_fim = cleaned_data['data_fim']
+
+        if data_inicio > data_fim:
+            raise ValidationError('Data início não pode ser superior à data fim')
+
+        data_inicio_intervalo = cleaned_data['data_inicio_intervalo']
+        data_fim_intervalo = cleaned_data['data_fim_intervalo']
+
+        if data_inicio_intervalo and data_fim_intervalo and \
+            data_inicio_intervalo > data_fim_intervalo:
+                raise ValidationError('Data início de intervalo não pode ser '
+                                      'superior à data fim de intervalo')
+
+
+        return cleaned_data
+
 
 class TipoAutorForm(ModelForm):
 
diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py
--- a/sapl/comissoes/forms.py
+++ b/sapl/comissoes/forms.py
@@ -47,6 +47,10 @@ class Meta:
 
     def clean(self):
         cleaned_data = super(PeriodoForm, self).clean()
+
+        if not self.is_valid():
+            return cleaned_data
+
         data_inicio = cleaned_data['data_inicio']
         data_fim = cleaned_data['data_fim']
 
diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py
--- a/sapl/parlamentares/views.py
+++ b/sapl/parlamentares/views.py
@@ -17,6 +17,7 @@
 from django.views.generic import FormView
 from django.views.generic.edit import UpdateView
 
+from sapl.base.forms import SessaoLegislativaForm
 from sapl.base.models import Autor
 from sapl.comissoes.models import Participacao
 from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux,
@@ -35,7 +36,6 @@
 
 CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa')
 PartidoCrud = CrudAux.build(Partido, 'partidos')
-SessaoLegislativaCrud = CrudAux.build(SessaoLegislativa, 'sessao_legislativa')
 TipoDependenteCrud = CrudAux.build(TipoDependente, 'tipo_dependente')
 NivelInstrucaoCrud = CrudAux.build(NivelInstrucao, 'nivel_instrucao')
 TipoAfastamentoCrud = CrudAux.build(TipoAfastamento, 'tipo_afastamento')
@@ -44,6 +44,14 @@
 DependenteCrud = MasterDetailCrud.build(
     Dependente, 'parlamentar', 'dependente')
 
+class SessaoLegislativaCrud(CrudAux):
+    model = SessaoLegislativa
+
+    class CreateView(CrudAux.CreateView):
+        form_class = SessaoLegislativaForm
+
+    class UpdateView(CrudAux.UpdateView):
+        form_class = SessaoLegislativaForm
 
 class VotanteView(MasterDetailCrud):
     model = Votante


Test patch: