diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index f07ff1263..faa21a64b 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -218,13 +218,12 @@ class AnularProcoloAdmForm(ModelForm): cleaned_data = super(AnularProcoloAdmForm, self).clean() - numero = cleaned_data.get("numero") - ano = cleaned_data.get("ano") + if not self.is_valid(): + return cleaned_data + + numero = cleaned_data['numero'] + ano = cleaned_data['ano'] - # se não inserido numero ou ano não prosseguir - # (e ele vai falhar pq numero e ano são obrigatórios) - if not numero or not ano: - return try: protocolo = Protocolo.objects.get(numero=numero, ano=ano) if protocolo.anulado: @@ -234,6 +233,7 @@ class AnularProcoloAdmForm(ModelForm): except ObjectDoesNotExist: raise forms.ValidationError( _("Protocolo %s/%s não existe" % (numero, ano))) + exists = False if protocolo.tipo_materia: exists = MateriaLegislativa.objects.filter( diff --git a/sapl/protocoloadm/tests/test_protocoloadm.py b/sapl/protocoloadm/tests/test_protocoloadm.py index 66a2409f8..5653c14c3 100644 --- a/sapl/protocoloadm/tests/test_protocoloadm.py +++ b/sapl/protocoloadm/tests/test_protocoloadm.py @@ -250,3 +250,20 @@ def test_create_tramitacao(admin_client): tramitacao = TramitacaoAdministrativo.objects.last() # Verifica se a tramitacao que obedece as regras de negócios é criada assert tramitacao.data_tramitacao == datetime.date(2016, 8, 21) + + +@pytest.mark.django_db(transaction=False) +def test_anular_protocolo_dados_invalidos(): + protocolo = mommy.make(Protocolo, pk=1, numero=1, ano=2017) + + form = AnularProcoloAdmForm(data={}) + + assert not form.is_valid() + + errors = form.errors + + assert errors['numero'] == [_('Este campo é obrigatório.')] + assert errors['ano'] == [_('Este campo é obrigatório.')] + assert errors['justificativa_anulacao'] == [_('Este campo é obrigatório.')] + + assert len(errors) == 3