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