summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-16 20:49:52 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-16 20:49:52 +0100
commit39fc02162e2850cf935b72489428e79ad43e2ca8 (patch)
treed6d6c57f2aabfbadddc7d7c8c3e14a17d82ebf13 /ishtar_common
parent3c881d8f54447f47193408581e8f677ddd7fb049 (diff)
downloadIshtar-39fc02162e2850cf935b72489428e79ad43e2ca8.tar.bz2
Ishtar-39fc02162e2850cf935b72489428e79ad43e2ca8.zip
File size validator
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms.py12
-rw-r--r--ishtar_common/forms_common.py13
2 files changed, 22 insertions, 3 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 526255277..7b98021d6 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -26,8 +26,10 @@ import re
import types
from django import forms
+from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
+from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.core import validators
from django.forms.formsets import BaseFormSet, DELETION_FIELD_NAME
@@ -81,6 +83,16 @@ name_validator = validators.RegexValidator(
'invalid')
+def file_size_validator(value):
+ limit = (settings.MAX_UPLOAD_SIZE * 1024 * 1024) - 100
+ if value.size > limit:
+ raise ValidationError(
+ unicode(_(u'File too large. Size should not exceed {} Mo.')).format(
+ settings.MAX_UPLOAD_SIZE
+ )
+ )
+
+
class FloatField(forms.FloatField):
"""
Allow the use of comma for separating float fields
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 47a282ab7..6e6cd553e 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -43,7 +43,8 @@ from bootstrap_datepicker.widgets import DatePicker
from ishtar_common.templatetags.link_to_window import simple_link_to_window
from forms import FinalForm, FormSet, reverse_lazy, name_validator, \
TableSelect, ManageOldType, CustomForm, FieldType, FormHeader, \
- FormSetWithDeleteSwitches, IshtarForm, get_data_from_formset
+ FormSetWithDeleteSwitches, IshtarForm, get_data_from_formset, \
+ file_size_validator
from ishtar_common.utils import is_downloadable, clean_session_cache, \
max_size_help
@@ -148,6 +149,8 @@ class NewImportForm(forms.ModelForm):
available=True
)
]
+ self.fields['imported_file'].validators = [file_size_validator]
+ self.fields['imported_images'].validators = [file_size_validator]
def clean(self):
data = self.cleaned_data
@@ -1108,10 +1111,14 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
label=_(u"Numerical ressource (web address)"))
image = forms.ImageField(
label=_(u"Image"), help_text=mark_safe(get_image_help()),
- max_length=255, required=False, widget=widgets.ImageFileInput())
+ max_length=255, required=False, widget=widgets.ImageFileInput(),
+ validators=[file_size_validator]
+ )
associated_file = forms.FileField(
label=pgettext(u"Not directory", u"File"), max_length=255,
- required=False, help_text=max_size_help())
+ required=False, help_text=max_size_help(),
+ validators=[file_size_validator]
+ )
reference = forms.CharField(
label=_(u"Reference"),
validators=[validators.MaxLengthValidator(100)], required=False)