Revision: 34415
Updated Code
at September 1, 2011 06:07 by tclancy
Updated Code
import os from django import forms from django.conf import settings class ValidatedFileField(forms.FileField): def __init__(self, file_extensions, content_types, max_file_size=None, *args, **kwargs): super(ValidatedFileField, self).__init__(*args, **kwargs) self.file_extensions = [f.lower().replace('.', '') for f in file_extensions] self.content_types = content_types self.max_file_size = max_file_size def clean(self, data, initial=None): from django.template.defaultfilters import filesizeformat if not data and initial: return initial f = super(ValidatedFileField, self).clean(data) if not f: return f if self.max_file_size and self.max_file_size < f.size: raise forms.ValidationError('Files cannot exceed %s in size' % filesizeformat(self.max_file_size)) # not allowing files without an extension, really a preference thing if not f.name or f.name.find('.') == -1: raise forms.ValidationError('Does not appear to be a valid file') extension = os.path.splitext(f.name)[-1].lower().replace('.', '') if not extension in self.file_extensions or \ not f.content_type in self.content_types: raise forms.ValidationError('Accepted file types: %s' %\ ' '.join(self.file_extensions)) return super(ValidatedFileField, self).clean(data)
Revision: 34414
Updated Code
at September 1, 2011 03:10 by tclancy
Updated Code
import os from django import forms from django.conf import settings class ValidatedFileField(forms.FileField): def __init__(self, file_extensions, content_types, max_file_size=None, *args, **kwargs): super(ValidatedFileField, self).__init__(*args, **kwargs) self.file_extensions = [f.lower().replace('.', '') for f in file_extensions] self.content_types = content_types self.max_file_size = max_file_size def clean(self, data, *args, **kwargs): from django.template.defaultfilters import filesizeformat f = super(ValidatedFileField, self).clean(data) if not f: return f if self.max_file_size and self.max_file_size < f.size: raise forms.ValidationError('Files cannot exceed %s in size' % filesizeformat(self.max_file_size)) # not allowing files without an extension, really a preference thing if not f.name or f.name.find('.') == -1: raise forms.ValidationError('Does not appear to be a valid file') extension = os.path.splitext(f.name)[-1].lower().replace('.', '') if not extension in self.file_extensions or \ not f.content_type in self.content_types: raise forms.ValidationError('Accepted file types: %s' %\ ' '.join(self.file_extensions)) return f
Revision: 34413
Updated Code
at September 1, 2011 03:07 by tclancy
Updated Code
class ValidatedFileField(forms.FileField): def __init__(self, file_extensions, content_types, max_file_size=None, *args, **kwargs): super(ValidatedFileField, self).__init__(*args, **kwargs) self.file_extensions = file_extensions self.content_types = content_types self.max_file_size = max_file_size def clean(self, data, *args, **kwargs): from django.template.defaultfilters import filesizeformat f = super(ValidatedFileField, self).clean(data) if not f: return f if self.max_file_size and self.max_file_size < f.size: raise forms.ValidationError('Files cannot exceed %s in size' % filesizeformat(self.max_file_size)) # not allowing files without an extension, really a preference thing if not f.name or f.name.find('.') == -1: raise forms.ValidationError('Does not appear to be a valid file') if not os.path.splitext(f.name)[-1].lower() in self.file_extensions or \ not f.content_type in self.content_types: raise forms.ValidationError('Accepted file types: %s' %\ ' '.join(self.file_extensions)) return f
Revision: 34412
Updated Code
at October 22, 2010 05:30 by tclancy
Updated Code
class ValidatedFileField(forms.FileField): def __init__(self, file_extensions, content_types, max_file_size=None, *args, **kwargs): super(ValidatedFileField, self).__init__(*args, **kwargs) self.file_extensions = file_extensions self.content_types = content_types self.max_file_size = max_file_size def clean(self, data, *args, **kwargs): from django.template.defaultfilters import filesizeformat f = super(ValidatedFileField, self).clean(data) if not f: return f if self.max_file_size and self.max_file_size < f.size: raise forms.ValidationError('Files cannot exceed %s in size' % filesizeformat(self.max_file_size)) # not allowing files without an extension, really a preference thing if not f.name or f.name.find('.') == -1: raise forms.ValidationError('Does not appear to be a valid file') file_exts = MAINTENANCE_UPLOAD_FILE_EXTENSIONS if not splitext(f.name)[1].lower()[1:] in self.file_extensions or \ not f.content_type in self.content_types: raise forms.ValidationError('Accepted file types: %s' %\ ' '.join(file_exts)) return f
Revision: 34411
Updated Code
at October 22, 2010 04:43 by tclancy
Updated Code
class ValidatedFileField(forms.FileField): def __init__(self, file_extensions, content_types, *args, **kwargs): super(ValidatedFileField, self).__init__(*args, **kwargs) self.file_extensions = file_extensions self.content_types = content_types def clean(self, data, *args, **kwargs): f = super(ValidatedFileField, self).clean(data) if not f: return f # not allowing files without an extension, really a preference thing if not f.name or f.name.find('.') == -1: raise forms.ValidationError('Does not appear to be a valid file') file_exts = MAINTENANCE_UPLOAD_FILE_EXTENSIONS if not splitext(f.name)[1].lower()[1:] in self.file_extensions or \ not f.content_type in self.content_types: raise forms.ValidationError('Accepted file types: %s' %\ ' '.join(file_exts)) return f
Revision: 34410
Updated Code
at October 22, 2010 04:41 by tclancy
Updated Code
class ValidatedFileField(forms.FileField): def __init__(self, file_extensions, content_types, *args, **kwargs): super(ValidatedFileField, self).__init__(*args, **kwargs) self.file_extensions = file_extensions self.content_types = content_types def clean(self, data, *args, **kwargs): f = super(ValidatedFileField, self).clean(data) if not f: return f file_exts = MAINTENANCE_UPLOAD_FILE_EXTENSIONS if not splitext(f.name)[1].lower()[1:] in self.file_extensions or \ not f.content_type in self.content_types: raise forms.ValidationError('Accepted file types: %s' %\ ' '.join(file_exts)) return f
Revision: 34409
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 22, 2010 04:38 by tclancy
Initial Code
class ValidatedFileField(forms.FileField): def __init__(self, file_extensions, content_types, *args, **kwargs): super(ValidatedFileField, self).__init__(*args, **kwargs) self.file_extensions = file_extensions self.content_types = content_types def clean(self, data, *args, **kwargs): f = super(ValidatedFileField, self).clean(data) if not f: return f file_exts = MAINTENANCE_UPLOAD_FILE_EXTENSIONS if not splitext(f.name)[1].lower() in self.file_extensions or \ not f.content_type in self.content_types: raise forms.ValidationError('Accepted file types: %s' %\ ' '.join(file_exts)) return f
Initial URL
http://www.neverfriday.com/sweetfriday/2008/03/validating-file-uploads-with-d.html
Initial Description
Inspired by the linked code.
Initial Title
Django Validated Upload Field
Initial Tags
Initial Language
Python