Django

Code

Changeset 9477

Show
Ignore:
Timestamp:
11/16/08 13:08:53 (2 months ago)
Author:
kmtracey
Message:

[1.0.X] Fixed #9608: Ensured a Model's default repr() is printable even if its unicode method raises a Unicode error.

r9475 from trunk.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/releases/1.0.X

    • Property svnmerge-integrated changed from /django/trunk:1-9097,9099-9102,9104-9109,9111,9113-9144,9146-9151,9153-9156,9158-9159,9161-9187,9189-9247,9249-9262,9264-9277,9279-9298,9301-9302,9305-9331,9333-9343,9345,9347,9350-9352,9355-9396,9399-9440 to /django/trunk:1-9097,9099-9102,9104-9109,9111,9113-9144,9146-9151,9153-9156,9158-9159,9161-9187,9189-9247,9249-9262,9264-9277,9279-9298,9301-9302,9305-9331,9333-9343,9345,9347,9350-9352,9355-9396,9399-9462,9466-9469,9471-9476
  • django/branches/releases/1.0.X/django/db/models/base.py

    r8932 r9477  
    267267 
    268268    def __repr__(self): 
    269         return smart_str(u'<%s: %s>' % (self.__class__.__name__, unicode(self))) 
     269        try: 
     270            u = unicode(self) 
     271        except (UnicodeEncodeError, UnicodeDecodeError): 
     272            u = '[Bad Unicode data]' 
     273        return smart_str(u'<%s: %s>' % (self.__class__.__name__, u)) 
    270274 
    271275    def __str__(self): 
  • django/branches/releases/1.0.X/tests/regressiontests/model_regress/models.py

    r9468 r9477  
    4646    def __unicode__(self): 
    4747        return self.name 
     48 
     49class BrokenUnicodeMethod(models.Model): 
     50    name = models.CharField(max_length=7) 
     51    def __unicode__(self): 
     52        return 'Názov: %s' % self.name 
     53 
    4854 
    4955__test__ = {'API_TESTS': """ 
     
    129135<Worker: Full-time> 
    130136 
     137# Models with broken unicode methods should still have a printable repr 
     138>>> b = BrokenUnicodeMethod(name="Jerry") 
     139>>> b.save() 
     140>>> BrokenUnicodeMethod.objects.all() 
     141[<BrokenUnicodeMethod: [Bad Unicode data]>] 
     142 
    131143""" 
    132144}