forms.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from django.utils.translation import ugettext_lazy as _
  2. from django.forms import * # noqa
  3. from django.forms import Form as BaseForm, ModelForm as BaseModelForm
  4. TEXT_BASED_FIELDS = (
  5. CharField, EmailField, FilePathField, URLField
  6. )
  7. def YesNoSwitch(**kwargs):
  8. if 'initial' not in kwargs:
  9. kwargs['initial'] = 0
  10. return TypedChoiceField(
  11. coerce=int,
  12. choices=((1, _("Yes")), (0, _("No"))),
  13. widget=RadioSelect(attrs={'class': 'yesno-switch'}),
  14. **kwargs)
  15. class AutoStripWhitespacesMixin(object):
  16. autostrip_exclude = []
  17. def full_clean(self):
  18. self.data = self.data.copy()
  19. for name, field in self.fields.iteritems():
  20. if (field.__class__ in TEXT_BASED_FIELDS and
  21. not name in self.autostrip_exclude):
  22. try:
  23. self.data[name] = self.data[name].strip()
  24. except KeyError:
  25. pass
  26. return super(AutoStripWhitespacesMixin, self).full_clean()
  27. class Form(AutoStripWhitespacesMixin, BaseForm):
  28. pass
  29. class ModelForm(AutoStripWhitespacesMixin, BaseModelForm):
  30. pass