def full_clean(self):
        """
        Cleans all of self.data and populates self.__errors and self.clean_data.
        """
        errors = ErrorDict()
        if not self.is_bound: # Stop further processing.
            self.__errors = errors
            return
        self.clean_data = {}
        for name, field in self.fields.items():
            # value_from_datadict() gets the data from the dictionary.
            # Each widget type knows how to retrieve its own data, because some
            # widgets split data over several HTML fields.
            value = field.widget.value_from_datadict(self.data, self.add_prefix(name))
            try:
                value = field.clean(value)
                self.clean_data[name] = value
                if hasattr(self, 'clean_%s' % name):
                    value = getattr(self, 'clean_%s' % name)()
                self.clean_data[name] = value
            except ValidationError, e:
                errors[name] = e.messages
        try:
            self.clean_data = self.clean()
        except __HOLE__, e:
            errors[NON_FIELD_ERRORS] = e.messages
        if errors:
            delattr(self, 'clean_data')
        self.__errors = errors
dataset/ETHPy150Open AppScale/appscale/AppServer/lib/django-0.96/django/newforms/forms.py/BaseForm.full_clean