python - Extending a form field to add new validations -


i've written app uses forms collect information sent in email. many of these forms have filefield used attach files email. i'd validate 2 things, size of file (to ensure emails accepted our mail server. i'd check file extension, discourage attaching file types not useable our users.

(this python class i'm trying extend)

class filefield(field):     widget = fileinput     default_error_messages = {         'invalid': _(u"no file submitted. check encoding type on form."),         'missing': _(u"no file submitted."),         'empty': _(u"the submitted file empty."),         'max_length': _(u'ensure filename has @ %(max)d characters (it has %(length)d).'),     }      def __init__(self, *args, **kwargs):         self.max_length = kwargs.pop('max_length', none)         super(filefield, self).__init__(*args, **kwargs)      def clean(self, data, initial=none):         super(filefield, self).clean(initial or data)         if not self.required , data in empty_values:             return none         elif not data , initial:             return initial          # uploadedfile objects should have name , size attributes.         try:             file_name = data.name             file_size = data.size         except attributeerror:             raise validationerror(self.error_messages['invalid'])          if self.max_length not none , len(file_name) > self.max_length:             error_values =  {'max': self.max_length, 'length': len(file_name)}             raise validationerror(self.error_messages['max_length'] % error_values)         if not file_name:             raise validationerror(self.error_messages['invalid'])         if not file_size:             raise validationerror(self.error_messages['empty'])     return data 

just overload "clean" method:

def clean(self, data, initial=none):     try:         if data.size > somesize:             raise validationerror('file big')          (junk, ext) = os.path.splitext(data.name)         if not ext in ('.jpg', '.gif', '.png'):             raise validationerror('invalid file type')      except attributeerror:         raise validationerror(self.error_messages['invalid'])      return filefield.clean(self, data, initial) 

Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -