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

Source Code for Module omeroweb.custom_forms

 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 
 8   
9 -class NonASCIIForm(forms.Form):
10
11 - def __init__ (self, *args, **kwargs):
12 super(NonASCIIForm, self).__init__(*args, **kwargs)
13
14 - def full_clean(self):
15 """ 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')
57