diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 03d158075..023479bb7 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -18,6 +18,7 @@ from sapl.base.models import Autor, TipoAutor 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 @@ class UsuarioEditForm(ModelForm): 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 index 125b2599c..0a3718b1d 100644 --- a/sapl/comissoes/forms.py +++ b/sapl/comissoes/forms.py @@ -47,6 +47,10 @@ class PeriodoForm(forms.ModelForm): 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 index 078483f35..b56215648 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -17,6 +17,7 @@ from django.views.decorators.clickjacking import xframe_options_exempt 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 @@ from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, 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 @@ TipoMilitarCrud = CrudAux.build(SituacaoMilitar, 'tipo_situa_militar') 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