Package omeroweb :: Module custom_forms
[hide private]
[frames] | no frames]

Source Code for Module omeroweb.custom_forms

 1  from django import forms 
 2  from django.utils.encoding import smart_str, smart_unicode 
 3   
 4  from django.forms.util import ErrorDict, ValidationError 
 5  from django.forms.fields import FileField, CharField 
 6   
7 -class NonASCIIForm(forms.Form):
8
9 - def __init__ (self, *args, **kwargs):
10 super(NonASCIIForm, self).__init__(*args, **kwargs)
11
12 - def full_clean(self):
13 """ 14 Cleans all of self.data and populates self._errors and 15 self.cleaned_data. 16 """ 17 self._errors = ErrorDict() 18 if not self.is_bound: # Stop further processing. 19 return 20 self.cleaned_data = {} 21 # If the form is permitted to be empty, and none of the form data has 22 # changed from the initial data, short circuit any validation. 23 if self.empty_permitted and not self.has_changed(): 24 return 25 for name, field in self.fields.items(): 26 # value_from_datadict() gets the data from the data dictionaries. 27 # Each widget type knows how to retrieve its own data, because some 28 # widgets split data over several HTML fields. 29 value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) 30 try: 31 if isinstance(field, FileField): 32 initial = self.initial.get(name, field.initial) 33 value = field.clean(value, initial) 34 elif isinstance(field, CharField): 35 if value is not None and isinstance(value, basestring) and len(value)>0: 36 value = str(smart_str(value)) 37 else: 38 value = field.clean(value) 39 else: 40 value = field.clean(value) 41 self.cleaned_data[name] = value 42 if hasattr(self, 'clean_%s' % name): 43 value = getattr(self, 'clean_%s' % name)() 44 self.cleaned_data[name] = value 45 except ValidationError, e: 46 self._errors[name] = self.error_class(e.messages) 47 if name in self.cleaned_data: 48 del self.cleaned_data[name] 49 try: 50 self.cleaned_data = self.clean() 51 except ValidationError, e: 52 self._errors[forms.Form.NON_FIELD_ERRORS] = self.error_class(e.messages) 53 if self._errors: 54 delattr(self, 'cleaned_data')
55