diff options
Diffstat (limited to 'django/newforms/util.py')
| -rw-r--r-- | django/newforms/util.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/django/newforms/util.py b/django/newforms/util.py index 3887010c85..a78623a17b 100644 --- a/django/newforms/util.py +++ b/django/newforms/util.py @@ -1,11 +1,22 @@ -# Default encoding for input byte strings. -DEFAULT_ENCODING = 'utf-8' # TODO: First look at django.conf.settings, then fall back to this. +from django.conf import settings def smart_unicode(s): - if not isinstance(s, unicode): - s = unicode(s, DEFAULT_ENCODING) + if not isinstance(s, basestring): + s = unicode(str(s)) + elif not isinstance(s, unicode): + s = unicode(s, settings.DEFAULT_CHARSET) return s +class StrAndUnicode(object): + """ + A class whose __str__ returns its __unicode__ as a bytestring + according to settings.DEFAULT_CHARSET. + + Useful as a mix-in. + """ + def __str__(self): + return self.__unicode__().encode(settings.DEFAULT_CHARSET) + class ErrorDict(dict): """ A collection of errors that knows how to display itself in various formats. |
