diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2009-04-13 12:40:43 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2009-04-13 12:40:43 +0000 |
| commit | 960d3172f630b80c909ffb517356fdb3161d2d3a (patch) | |
| tree | 1a81ccdf272e76944120d693cba0a265a0ec0ddf /django/utils | |
| parent | 6be2d903f328421e11a0da3c3321d15ceaeb1656 (diff) | |
[1.0.X] Fixed #9522 -- Modified handling of values in base serializer so that field subclasses can define their own value_to_string() method for serialization. Thanks to Alex Koshelev for the report and initial patch.
Merge of r10554 from trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@10555 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/utils')
| -rw-r--r-- | django/utils/encoding.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/django/utils/encoding.py b/django/utils/encoding.py index 7e87b05c79..9388d67f4c 100644 --- a/django/utils/encoding.py +++ b/django/utils/encoding.py @@ -41,6 +41,19 @@ def smart_unicode(s, encoding='utf-8', strings_only=False, errors='strict'): return s return force_unicode(s, encoding, strings_only, errors) +def is_protected_type(obj): + """Determine if the object instance is of a protected type. + + Objects of protected types are preserved as-is when passed to + force_unicode(strings_only=True). + """ + return isinstance(obj, ( + types.NoneType, + int, long, + datetime.datetime, datetime.date, datetime.time, + float, Decimal) + ) + def force_unicode(s, encoding='utf-8', strings_only=False, errors='strict'): """ Similar to smart_unicode, except that lazy instances are resolved to @@ -48,7 +61,7 @@ def force_unicode(s, encoding='utf-8', strings_only=False, errors='strict'): If strings_only is True, don't convert (some) non-string-like objects. """ - if strings_only and isinstance(s, (types.NoneType, int, long, datetime.datetime, datetime.date, datetime.time, float, Decimal)): + if strings_only and is_protected_type(s): return s try: if not isinstance(s, basestring,): |
