diff --git a/sapl/audiencia/forms.py b/sapl/audiencia/forms.py index 2912ab58d..56f4d1285 100755 --- a/sapl/audiencia/forms.py +++ b/sapl/audiencia/forms.py @@ -10,9 +10,9 @@ from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout from sapl.crispy_layout_mixin import SaplFormHelper from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa -from sapl.utils import timezone +from sapl.utils import timezone, FileFieldCheckMixin -class AudienciaForm(forms.ModelForm): +class AudienciaForm(FileFieldCheckMixin, forms.ModelForm): logger = logging.getLogger(__name__) data_atual = timezone.now() diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 9c694d3e9..c7c8c9f9d 100755 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -15,6 +15,7 @@ from django.utils import timezone from django.utils.translation import ugettext_lazy as _ from floppyforms.widgets import ClearableFileInput from image_cropping.widgets import CropWidget, ImageCropWidget +from sapl.utils import FileFieldCheckMixin from sapl.base.models import Autor, TipoAutor from sapl.crispy_layout_mixin import form_actions, to_row @@ -196,7 +197,7 @@ class LegislaturaForm(ModelForm): return data -class ParlamentarForm(ModelForm): +class ParlamentarForm(FileFieldCheckMixin, ModelForm): class Meta: model = Parlamentar diff --git a/sapl/utils.py b/sapl/utils.py index ed89d926a..9c7350c63 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -580,6 +580,7 @@ class NormaPesquisaOrderingFilter(django_filters.OrderingFilter): class FileFieldCheckMixin(BaseForm): def _check(self): cleaned_data = super(FileFieldCheckMixin, self).clean() + errors = [] for name, campo in self.fields.items(): if isinstance(campo, forms.fields.FileField): error = self.errors.get(name) @@ -589,14 +590,17 @@ class FileFieldCheckMixin(BaseForm): "arquivo no campo '{}'".format( campo.label)) for e in error] - raise ValidationError(msgs) + for msg in msgs: + errors.append(msg) arquivo = self.cleaned_data.get(name) if arquivo and not isinstance(arquivo, UploadedFile): if not os.path.exists(arquivo.path): - raise ValidationError("Arquivo referenciado no campo " - " '%s' inexistente! Marque a " - "opção Limpar e Salve." % campo.label) + errors.append("Arquivo referenciado no campo " + " '%s' inexistente! Marque a " + "opção Limpar e Salve." % campo.label) + if errors: + raise ValidationError(errors) return cleaned_data def clean(self):