from django.core import exceptions from django.utils.deconstruct import deconstructible from django.utils.translation import ugettext_lazy as _ @deconstructible class FileSizeValidator(): size_limit = 5242880 # 5MB - 5242880 message = _('Too big file. %(size)d') code = 'invalid' def __init__(self, size_limit=None, message=None, code=None): if size_limit is not None: self.size_limit = size_limit if message is not None: self.message = message if code is not None: self.code = code def __call__(self, file): if file.size > self.size_limit: raise exceptions.ValidationError( self.message, code=self.code, params={'size': file.size} )