Changeset 6649
- Timestamp:
- 11/03/07 22:37:04 (2 years ago)
- Files:
-
- django/trunk/django/utils/encoding.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/utils/encoding.py
r6567 r6649 2 2 import urllib 3 3 import datetime 4 4 5 from django.utils.functional import Promise 6 7 class DjangoUnicodeDecodeError(UnicodeDecodeError): 8 def __init__(self, obj, *args): 9 self.obj = obj 10 UnicodeDecodeError.__init__(self, *args) 11 12 def __str__(self): 13 original = UnicodeDecodeError.__str__(self) 14 return '%s. You passed in %r (%s)' % (original, self.obj, 15 type(self.obj)) 5 16 6 17 class StrAndUnicode(object): … … 34 45 if strings_only and isinstance(s, (types.NoneType, int, long, datetime.datetime, datetime.date, datetime.time, float)): 35 46 return s 36 if not isinstance(s, basestring,): 37 if hasattr(s, '__unicode__'): 38 s = unicode(s) 39 else: 40 s = unicode(str(s), encoding, errors) 41 elif not isinstance(s, unicode): 42 s = unicode(s, encoding, errors) 47 try: 48 if not isinstance(s, basestring,): 49 if hasattr(s, '__unicode__'): 50 s = unicode(s) 51 else: 52 s = unicode(str(s), encoding, errors) 53 elif not isinstance(s, unicode): 54 s = unicode(s, encoding, errors) 55 except UnicodeDecodeError, e: 56 raise DjangoUnicodeDecodeError(s, *e.args) 43 57 return s 44 58
