From a56a62baa47ea1caa357a19ebf3767f07207568b Mon Sep 17 00:00:00 2001 From: Edward <9326037+edwardoliveira@users.noreply.github.com> Date: Thu, 11 Mar 2021 15:16:59 -0300 Subject: [PATCH] 3365 filefield obrigatorio (#3368) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Exige arquivo em doc acessório * Fixes #3365 * fix tests Co-authored-by: eribeiro --- sapl/comissoes/forms.py | 16 ++++++++++++++-- sapl/materia/forms.py | 8 +++++++- sapl/materia/tests/test_materia.py | 5 +++++ sapl/protocoloadm/forms.py | 17 +++++++++++++++-- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py index 48552565f..da4c57b5d 100644 --- a/sapl/comissoes/forms.py +++ b/sapl/comissoes/forms.py @@ -514,10 +514,16 @@ class DocumentoAcessorioCreateForm(FileFieldCheckMixin, forms.ModelForm): if not self.is_valid(): return self.cleaned_data - arquivo = self.cleaned_data.get('arquivo', False) + arquivo = self.cleaned_data.get('arquivo') if arquivo: validar_arquivo(arquivo, "Texto Integral") + else: + ## TODO: definir arquivo no form e preservar o nome do campo + ## que gerou a mensagem de erro. + ## arquivo = forms.FileField(required=True, label="Texto Integral") + nome_arquivo = self.fields['arquivo'].label + raise ValidationError(f'Favor anexar arquivo em {nome_arquivo}') return self.cleaned_data @@ -540,9 +546,15 @@ class DocumentoAcessorioEditForm(FileFieldCheckMixin, forms.ModelForm): if not self.is_valid(): return self.cleaned_data - arquivo = self.cleaned_data.get('arquivo', False) + arquivo = self.cleaned_data.get('arquivo') if arquivo: validar_arquivo(arquivo, "Texto Integral") + else: + ## TODO: definir arquivo no form e preservar o nome do campo + ## que gerou a mensagem de erro. + ## arquivo = forms.FileField(required=True, label="Texto Integral") + nome_arquivo = self.fields['arquivo'].label + raise ValidationError(f'Favor anexar arquivo em {nome_arquivo}') return self.cleaned_data diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index ec385ffe8..856e7fa13 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -343,10 +343,16 @@ class DocumentoAcessorioForm(FileFieldCheckMixin, ModelForm): if not self.is_valid(): return self.cleaned_data - arquivo = self.cleaned_data.get('arquivo', False) + arquivo = self.cleaned_data.get('arquivo') if arquivo: validar_arquivo(arquivo, "Texto Integral") + else: + ## TODO: definir arquivo no form e preservar o nome do campo + ## que gerou a mensagem de erro. + ## arquivo = forms.FileField(required=True, label="Texto Integral") + nome_arquivo = self.fields['arquivo'].label + raise ValidationError(f'Favor anexar arquivo em {nome_arquivo}') return self.cleaned_data diff --git a/sapl/materia/tests/test_materia.py b/sapl/materia/tests/test_materia.py index be6d697cb..99e372149 100644 --- a/sapl/materia/tests/test_materia.py +++ b/sapl/materia/tests/test_materia.py @@ -324,6 +324,10 @@ def test_documento_acessorio_submit(admin_client): tipo = baker.make(TipoDocumento, descricao='Teste') + arquivo = SimpleUploadedFile("file.pdf", + b'conteudo do arquivo', + content_type="application/pdf") + # Testa POST response = admin_client.post(reverse( 'sapl.materia:documentoacessorio_create', @@ -332,6 +336,7 @@ def test_documento_acessorio_submit(admin_client): 'nome': 'teste_nome', 'data_materia': '2016-03-21', 'autor': autor, + 'arquivo': arquivo, 'ementa': 'teste_ementa', 'data': '2016-03-21', 'salvar': 'salvar'}, diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 0441c454f..2e8df41e3 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -641,10 +641,16 @@ class DocumentoAcessorioAdministrativoForm(FileFieldCheckMixin, ModelForm): if not self.is_valid(): return self.cleaned_data - arquivo = self.cleaned_data.get('arquivo', False) + arquivo = self.cleaned_data.get('arquivo') if arquivo: validar_arquivo(arquivo, "Arquivo") + else: + ## TODO: definir arquivo no form e preservar o nome do campo + ## que gerou a mensagem de erro. + ## arquivo = forms.FileField(required=True, label="Texto Integral") + nome_arquivo = self.fields['arquivo'].label + raise ValidationError(f'Favor anexar arquivo em {nome_arquivo}') return self.cleaned_data @@ -1175,10 +1181,17 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm): ' documento vinculado' % (numero_protocolo, ano_protocolo))) - texto_integral = self.cleaned_data.get('texto_integral', False) + texto_integral = self.cleaned_data.get('texto_integral') if texto_integral: validar_arquivo(texto_integral, "Texto Integral") + else: + ## TODO: definir arquivo no form e preservar o nome do campo + ## que gerou a mensagem de erro. + ## texto_integral = forms.FileField(required=True, label="Texto Integral") + nome_arquivo = self.fields['texto_integral'].label + raise ValidationError(f'Favor anexar arquivo em {nome_arquivo}') + return self.cleaned_data