Merge fixes

This commit is contained in:
Ross Lawley 2013-04-17 14:27:33 +00:00
parent 51e50bf0a9
commit 420376d036
3 changed files with 22 additions and 10 deletions

View File

@ -30,7 +30,7 @@ class BaseDocument(object):
_dynamic_lock = True _dynamic_lock = True
_initialised = False _initialised = False
def __init__(self, __auto_convert=True, *args, **values): def __init__(self, *args, **values):
""" """
Initialise a document or embedded document Initialise a document or embedded document
@ -46,7 +46,7 @@ class BaseDocument(object):
if name in values: if name in values:
raise TypeError("Multiple values for keyword argument '" + name + "'") raise TypeError("Multiple values for keyword argument '" + name + "'")
values[name] = value values[name] = value
__auto_convert = values.pop("__auto_convert", True)
signals.pre_init.send(self.__class__, document=self, values=values) signals.pre_init.send(self.__class__, document=self, values=values)
self._data = {} self._data = {}

View File

@ -1138,8 +1138,13 @@ class QuerySet(object):
if self._hint != -1: if self._hint != -1:
self._cursor_obj.hint(self._hint) self._cursor_obj.hint(self._hint)
return self._cursor_obj return self._cursor_obj
def __deepcopy__(self, memo):
"""Essential for chained queries with ReferenceFields involved"""
return self.clone()
@property @property
def _query(self): def _query(self):
if self._mongo_query is None: if self._mongo_query is None:
@ -1302,6 +1307,9 @@ class QuerySet(object):
except: except:
pass pass
key_list.append((key, direction)) key_list.append((key, direction))
if self._cursor_obj:
self._cursor_obj.sort(key_list)
return key_list return key_list
def _get_scalar(self, doc): def _get_scalar(self, doc):

View File

@ -249,6 +249,10 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(list(A.objects.none()), []) self.assertEqual(list(A.objects.none()), [])
self.assertEqual(list(A.objects.none().all()), []) self.assertEqual(list(A.objects.none().all()), [])
def test_chaining(self):
class A(Document):
s = StringField()
class B(Document): class B(Document):
ref = ReferenceField(A) ref = ReferenceField(A)
boolfield = BooleanField(default=False) boolfield = BooleanField(default=False)
@ -1475,7 +1479,6 @@ class QuerySetTest(unittest.TestCase):
BlogPost.drop_collection() BlogPost.drop_collection()
def test_set_list_embedded_documents(self): def test_set_list_embedded_documents(self):
class Author(EmbeddedDocument): class Author(EmbeddedDocument):
@ -1604,6 +1607,7 @@ class QuerySetTest(unittest.TestCase):
qs = self.Person.objects.all().limit(10) qs = self.Person.objects.all().limit(10)
qs = qs.order_by('-age') qs = qs.order_by('-age')
ages = [p.age for p in qs] ages = [p.age for p in qs]
self.assertEqual(ages, [40, 30, 20]) self.assertEqual(ages, [40, 30, 20])