Unicode fix for repr (MongoEngine/mongoengine#133)
This commit is contained in:
parent
e2d826c412
commit
dc1849bad5
@ -4,6 +4,7 @@ Changelog
|
|||||||
|
|
||||||
Changes in 0.7.X
|
Changes in 0.7.X
|
||||||
================
|
================
|
||||||
|
- Unicode fix for repr (MongoEngine/mongoengine#133)
|
||||||
- Allow updates with match operators (MongoEngine/mongoengine#144)
|
- Allow updates with match operators (MongoEngine/mongoengine#144)
|
||||||
- Updated URLField - now can have a override the regex (MongoEngine/mongoengine#136)
|
- Updated URLField - now can have a override the regex (MongoEngine/mongoengine#136)
|
||||||
- Allow Django AuthenticationBackends to work with Django user (hmarr/mongoengine#573)
|
- Allow Django AuthenticationBackends to work with Django user (hmarr/mongoengine#573)
|
||||||
|
@ -1333,10 +1333,11 @@ class BaseDocument(object):
|
|||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
try:
|
try:
|
||||||
u = txt_type(self)
|
u = self.__str__()
|
||||||
except (UnicodeEncodeError, UnicodeDecodeError):
|
except (UnicodeEncodeError, UnicodeDecodeError):
|
||||||
u = '[Bad Unicode data]'
|
u = '[Bad Unicode data]'
|
||||||
return '<%s: %s>' % (self.__class__.__name__, u)
|
repr_type = type(u)
|
||||||
|
return repr_type('<%s: %s>' % (self.__class__.__name__, u))
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if hasattr(self, '__unicode__'):
|
if hasattr(self, '__unicode__'):
|
||||||
@ -1344,7 +1345,7 @@ class BaseDocument(object):
|
|||||||
return self.__unicode__()
|
return self.__unicode__()
|
||||||
else:
|
else:
|
||||||
return unicode(self).encode('utf-8')
|
return unicode(self).encode('utf-8')
|
||||||
return '%s object' % self.__class__.__name__
|
return txt_type('%s object' % self.__class__.__name__)
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
if isinstance(other, self.__class__) and hasattr(other, 'id'):
|
if isinstance(other, self.__class__) and hasattr(other, 'id'):
|
||||||
|
@ -85,6 +85,22 @@ class DocumentTest(unittest.TestCase):
|
|||||||
# Ensure Document isn't treated like an actual document
|
# Ensure Document isn't treated like an actual document
|
||||||
self.assertFalse(hasattr(Document, '_fields'))
|
self.assertFalse(hasattr(Document, '_fields'))
|
||||||
|
|
||||||
|
def test_repr(self):
|
||||||
|
"""Ensure that unicode representation works
|
||||||
|
"""
|
||||||
|
class Article(Document):
|
||||||
|
title = StringField()
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.title
|
||||||
|
|
||||||
|
Article.drop_collection()
|
||||||
|
|
||||||
|
Article(title=u'привет мир').save()
|
||||||
|
|
||||||
|
self.assertEqual('<Article: привет мир>', repr(Article.objects.first()))
|
||||||
|
self.assertEqual('[<Article: привет мир>]', repr(Article.objects.all()))
|
||||||
|
|
||||||
def test_collection_naming(self):
|
def test_collection_naming(self):
|
||||||
"""Ensure that a collection with a specified name may be used.
|
"""Ensure that a collection with a specified name may be used.
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user