From 44d3d75ef42b233736db7d729efbfdd120ec8d7f Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Wed, 8 Aug 2018 13:16:13 -0300 Subject: [PATCH 1/5] Fixes #2112 --- sapl/parlamentares/forms.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 36ce94c3a..cab60fcf2 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -46,7 +46,7 @@ def validar_datas_legislatura(eleicao, inicio, fim, pk=None): msg_error = _('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 [False, msg_error] + return (False, msg_error) # Verifica se há alguma data cadastrada no intervalo de tempo desejado if Legislatura.objects.filter( @@ -54,15 +54,15 @@ def validar_datas_legislatura(eleicao, inicio, fim, pk=None): or Legislatura.objects.filter( data_fim__range=[inicio, fim]).exclude(pk=pk).exists(): msg_error = _('Já existe uma legislatura neste intervalo de datas') - return [False, msg_error] + return (False, msg_error) # Verifica se há alguma outra data de eleição cadastrada if Legislatura.objects.filter( data_eleicao=eleicao).exclude(pk=pk).exists(): msg_error = _('Esta data de eleição já foi cadastrada') - return [False, msg_error] + return (False, msg_error) - return [True, ''] + return (True, None) class MandatoForm(ModelForm): @@ -120,12 +120,24 @@ class LegislaturaForm(ModelForm): if not self.is_valid(): return self.cleaned_data + # import ipdb; ipdb.set_trace() + + numero = data['numero'] data_inicio = data['data_inicio'] data_fim = data['data_fim'] data_eleicao = data['data_eleicao'] pk = self.instance.pk + + ultima_legislatura = Legislatura.objects.filter(data_inicio__lte=data_inicio + ).order_by('-data_inicio').first() + + if ultima_legislatura and ultima_legislatura.numero >= numero: + raise ValidationError(_("Número deve ser maior que o da legislatura anterior")) + else: + pass + valida_datas = validar_datas_legislatura(data_eleicao, data_inicio, data_fim, From 9d62b2644d026ff28fca963c2d45cbd0148f55f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Sconetto?= Date: Wed, 8 Aug 2018 15:08:53 -0300 Subject: [PATCH 2/5] Fix #2112 --- sapl/parlamentares/forms.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index cab60fcf2..2993e3d3f 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -44,15 +44,15 @@ def validar_datas_legislatura(eleicao, inicio, fim, pk=None): # Verifica se data de eleição < inicio < fim if inicio >= fim or eleicao >= inicio: msg_error = _('A data início deve ser menor que a ' + - 'data fim, e a data eleição deve ser ' + + 'data fim e a data eleição deve ser ' + 'menor que a data início') return (False, msg_error) # Verifica se há alguma data cadastrada no intervalo de tempo desejado - if Legislatura.objects.filter( - data_inicio__range=[inicio, fim]).exclude(pk=pk).exists()\ - or Legislatura.objects.filter( - data_fim__range=[inicio, fim]).exclude(pk=pk).exists(): + intersecao_legislatura = Legislatura.objects.filter( + data_inicio__lte=fim, data_fim__gte=inicio + ).exclude(pk=pk).exists() + if intersecao_legislatura: msg_error = _('Já existe uma legislatura neste intervalo de datas') return (False, msg_error) @@ -120,7 +120,6 @@ class LegislaturaForm(ModelForm): if not self.is_valid(): return self.cleaned_data - # import ipdb; ipdb.set_trace() numero = data['numero'] data_inicio = data['data_inicio'] @@ -132,6 +131,8 @@ class LegislaturaForm(ModelForm): ultima_legislatura = Legislatura.objects.filter(data_inicio__lte=data_inicio ).order_by('-data_inicio').first() + #proxima_legislatura = Legislatura.objects.filter(data_fim__gt=data_fim + # ).order_by('data_fim').first() if ultima_legislatura and ultima_legislatura.numero >= numero: raise ValidationError(_("Número deve ser maior que o da legislatura anterior")) From 38d207e4d714e653abf4bd685fa2c6683a58ad81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Sconetto?= Date: Wed, 8 Aug 2018 15:45:39 -0300 Subject: [PATCH 3/5] Corrige erro no teste das datas --- sapl/parlamentares/tests/test_parlamentares.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sapl/parlamentares/tests/test_parlamentares.py b/sapl/parlamentares/tests/test_parlamentares.py index 3bd7abf47..bc404757d 100644 --- a/sapl/parlamentares/tests/test_parlamentares.py +++ b/sapl/parlamentares/tests/test_parlamentares.py @@ -233,7 +233,7 @@ def test_legislatura_form_invalido(): assert len(errors) == 4 - +@pytest.mark.django_db(transaction=False) def test_legislatura_form_datas_invalidas(): legislatura_form = LegislaturaForm(data={'numero': '1', @@ -245,7 +245,7 @@ def test_legislatura_form_datas_invalidas(): assert not legislatura_form.is_valid() expected = \ - _("A data início deve ser menor que a data fim, " + _("A data início deve ser menor que a data fim " "e a data eleição deve ser menor que a data início") assert legislatura_form.errors['__all__'] == [expected] From 1e54f5346a1eba8c7a369a31534940ffe1db696d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Sconetto?= Date: Wed, 8 Aug 2018 17:27:08 -0300 Subject: [PATCH 4/5] =?UTF-8?q?Adiciona=20a=20verifica=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20legislaturas=20a=20frente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/parlamentares/forms.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 2993e3d3f..f780ff302 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -131,13 +131,16 @@ class LegislaturaForm(ModelForm): ultima_legislatura = Legislatura.objects.filter(data_inicio__lte=data_inicio ).order_by('-data_inicio').first() - #proxima_legislatura = Legislatura.objects.filter(data_fim__gt=data_fim - # ).order_by('data_fim').first() + proxima_legislatura = Legislatura.objects.filter(data_fim__gt=data_fim + ).order_by('data_fim').first() if ultima_legislatura and ultima_legislatura.numero >= numero: - raise ValidationError(_("Número deve ser maior que o da legislatura anterior")) - else: - pass + raise ValidationError(_("Número deve ser maior que o da legislatura anterior")) + elif proxima_legislatura and proxima_legislatura.numero <= numero: + msg_erro = "O Número deve ser menor que {}, pois existe uma " \ + "legislatura afrente cronologicamente desta que está sendo criada!" + msg_erro.format(proxima_legislatura.numero) + raise ValidationError(_(msg_erro)) valida_datas = validar_datas_legislatura(data_eleicao, data_inicio, From efdbdbb4592f424208bf112cf0b9d6d11cfbed20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Sconetto?= Date: Mon, 13 Aug 2018 17:13:30 -0300 Subject: [PATCH 5/5] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20erro=20no=20forma?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/parlamentares/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index f780ff302..23c56dffb 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -139,7 +139,7 @@ class LegislaturaForm(ModelForm): elif proxima_legislatura and proxima_legislatura.numero <= numero: msg_erro = "O Número deve ser menor que {}, pois existe uma " \ "legislatura afrente cronologicamente desta que está sendo criada!" - msg_erro.format(proxima_legislatura.numero) + msg_erro = msg_erro.format(proxima_legislatura.numero) raise ValidationError(_(msg_erro)) valida_datas = validar_datas_legislatura(data_eleicao,