Browse Source

WIP

pull/2534/head
Edward Ribeiro 7 years ago
parent
commit
eb5bff8fe7
  1. 11
      sapl/base/forms.py
  2. 6
      sapl/materia/forms.py
  3. 26
      sapl/utils.py

11
sapl/base/forms.py

@ -1,4 +1,5 @@
import logging
import os
from crispy_forms.bootstrap import FieldWithButtons, InlineRadios, StrictButton
from sapl.crispy_layout_mixin import SaplFormHelper
@ -36,7 +37,7 @@ from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES,
RangeWidgetOverride, autor_label, autor_modal,
models_with_gr_for_model, qs_override_django_filter,
choice_anos_com_normas, choice_anos_com_materias,
FilterOverridesMetaMixin)
FilterOverridesMetaMixin, FileFieldCheckMixin)
from .models import AppConfig, CasaLegislativa
@ -1108,7 +1109,7 @@ class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet):
)
class CasaLegislativaForm(ModelForm):
class CasaLegislativaForm(FileFieldCheckMixin, ModelForm):
class Meta:
@ -1138,8 +1139,12 @@ class CasaLegislativaForm(ModelForm):
}
def clean_logotipo(self):
logotipo = self.cleaned_data.get('logotipo', False)
logotipo = self.cleaned_data.get('logotipo')
if logotipo:
if not os.path.exists(logotipo.path):
raise ValidationError("Arquivo referenciado no campo "
" '%s' inexistente! Marque a "
"opção Limpar e Salve." % self.fields['logotipo'].label)
if logotipo.size > MAX_IMAGE_UPLOAD_SIZE:
raise ValidationError("Imagem muito grande. ( > 2MB )")
return logotipo

6
sapl/materia/forms.py

@ -45,7 +45,7 @@ from sapl.utils import (YES_NO_CHOICES, SEPARADOR_HASH_PROPOSICAO,
MateriaPesquisaOrderingFilter, RangeWidgetOverride,
autor_label, autor_modal, gerar_hash_arquivo,
models_with_gr_for_model, qs_override_django_filter,
choice_anos_com_materias, FilterOverridesMetaMixin)
choice_anos_com_materias, FilterOverridesMetaMixin, FileFieldCheckMixin)
from .models import (AcompanhamentoMateria, Anexada, Autoria, DespachoInicial,
DocumentoAcessorio, Numeracao, Proposicao, Relatoria,
@ -122,7 +122,7 @@ class ReceberProposicaoForm(Form):
super(ReceberProposicaoForm, self).__init__(*args, **kwargs)
class MateriaSimplificadaForm(ModelForm):
class MateriaSimplificadaForm(FileFieldCheckMixin, ModelForm):
logger = logging.getLogger(__name__)
@ -175,7 +175,7 @@ class MateriaSimplificadaForm(ModelForm):
return cleaned_data
class MateriaLegislativaForm(ModelForm):
class MateriaLegislativaForm(FileFieldCheckMixin, ModelForm):
logger = logging.getLogger(__name__)

26
sapl/utils.py

@ -6,6 +6,9 @@ import re
from unicodedata import normalize as unicodedata_normalize
import unicodedata
from django.core.files.uploadedfile import UploadedFile
from django.forms import BaseForm
from sapl.crispy_layout_mixin import SaplFormHelper
from crispy_forms.layout import HTML, Button
from django import forms
@ -574,6 +577,29 @@ class NormaPesquisaOrderingFilter(django_filters.OrderingFilter):
return super().filter(qs, _value)
class FileFieldCheckMixin(BaseForm):
def clean(self):
cleaned_data = super(FileFieldCheckMixin, self).clean()
for name, campo in self.fields.items():
if isinstance(campo, forms.fields.FileField):
error = self.errors.get(name)
if error:
msgs = [e.replace('Certifique-se de que o arquivo',
"Certifique-se de que o nome do "
"arquivo no campo '{}'".format(
campo.label))
for e in error]
raise ValidationError(msgs)
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)
return cleaned_data
class AnoNumeroOrderingFilter(django_filters.OrderingFilter):
choices = (('DEC', 'Ordem Decrescente'),

Loading…
Cancel
Save