Trees | Indices | Help |
|
---|
|
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 from django import forms 4 from django.utils.encoding import smart_str, smart_unicode 5 6 from django.forms.util import ErrorDict, ValidationError 7 from django.forms.fields import FileField, CharField 810 135715 """ 16 Cleans all of self.data and populates self._errors and 17 self.cleaned_data. 18 """ 19 self._errors = ErrorDict() 20 if not self.is_bound: # Stop further processing. 21 return 22 self.cleaned_data = {} 23 # If the form is permitted to be empty, and none of the form data has 24 # changed from the initial data, short circuit any validation. 25 if self.empty_permitted and not self.has_changed(): 26 return 27 for name, field in self.fields.items(): 28 # value_from_datadict() gets the data from the data dictionaries. 29 # Each widget type knows how to retrieve its own data, because some 30 # widgets split data over several HTML fields. 31 value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) 32 try: 33 if isinstance(field, FileField): 34 initial = self.initial.get(name, field.initial) 35 value = field.clean(value, initial) 36 elif isinstance(field, CharField): 37 if value is not None and isinstance(value, basestring) and len(value)>0: 38 value = str(smart_str(value)) 39 else: 40 value = field.clean(value) 41 else: 42 value = field.clean(value) 43 self.cleaned_data[name] = value 44 if hasattr(self, 'clean_%s' % name): 45 value = getattr(self, 'clean_%s' % name)() 46 self.cleaned_data[name] = value 47 except ValidationError, e: 48 self._errors[name] = self.error_class(e.messages) 49 if name in self.cleaned_data: 50 del self.cleaned_data[name] 51 try: 52 self.cleaned_data = self.clean() 53 except ValidationError, e: 54 self._errors[forms.Form.NON_FIELD_ERRORS] = self.error_class(e.messages) 55 if self._errors: 56 delattr(self, 'cleaned_data')
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Tue Sep 23 15:05:01 2014 | http://epydoc.sourceforge.net |