diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 974068b20..3438013c6 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -170,6 +170,36 @@ class SessaoLegislativaForm(ModelForm): data_inicio = cleaned_data['data_inicio'] data_fim = cleaned_data['data_fim'] + legislatura = cleaned_data['legislatura'] + numero = cleaned_data['numero'] + data_inicio_leg = legislatura.data_inicio + data_fim_leg = legislatura.data_fim + + sessoes_legislativas = SessaoLegislativa.objects.filter(legislatura=legislatura) + + if sessoes_legislativas: + numeracoes = [n.numero for n in sessoes_legislativas] + numeracoes = sorted(numeracoes) + ult = max(numeracoes) + + else: + ult = SessaoLegislativa.objects.latest('data_fim') + ult = ult.numero + + if numero <= ult: + raise ValidationError('O número da Sessão Legislativa não pode ser menor ou igual ' + 'que o de Sessões Legislativas passadas') + + + if data_inicio < data_inicio_leg or \ + data_inicio > data_fim_leg: + raise ValidationError('A data de início da Sessão Legislativa deve estar compreendida ' + 'entre a data início e fim da Legislatura selecionada') + + if data_fim > data_fim_leg or \ + data_fim < data_inicio_leg: + raise ValidationError('A data de fim da Sessão Legislativa deve estar compreendida ' + 'entre a data início e fim da Legislatura selecionada') if data_inicio > data_fim: raise ValidationError('Data início não pode ser superior à data fim') @@ -182,6 +212,23 @@ class SessaoLegislativaForm(ModelForm): raise ValidationError('Data início de intervalo não pode ser ' 'superior à data fim de intervalo') + if data_inicio_intervalo: + if data_inicio_intervalo < data_inicio or \ + data_inicio_intervalo < data_inicio_leg or \ + data_inicio_intervalo > data_fim or \ + data_inicio_intervalo > data_inicio_leg: + raise ValidationError('A data de início do intervalo deve estar compreendida entre ' + 'as datas de início e fim tanto da Legislatura quanto da ' + 'própria Sessão Legislativa') + + if data_fim_intervalo: + if data_fim_intervalo > data_fim or \ + data_fim_intervalo > data_fim_leg or \ + data_fim_intervalo < data_inicio or \ + data_fim_intervalo < data_inicio_leg: + raise ValidationError('A data de fim do intervalo deve estar compreendida entre ' + 'as datas de início e fim tanto da Legislatura quanto da ' + 'própria Sessão Legislativa') return cleaned_data