DeReference is now used in a thread safe manner

No global / module instance is needed
Fixes #399
This commit is contained in:
Ross Lawley 2012-02-29 10:31:33 +00:00
parent 2a391f0f16
commit 1d7ea71c0d
4 changed files with 8 additions and 10 deletions

View File

@ -234,8 +234,8 @@ class ComplexBaseField(BaseField):
return self
if not self._dereference and instance._initialised:
from dereference import dereference
self._dereference = dereference # Cached
from dereference import DeReference
self._dereference = DeReference() # Cached
instance._data[self.name] = self._dereference(
instance._data.get(self.name), max_depth=1, instance=instance,
name=self.name

View File

@ -186,5 +186,3 @@ class DeReference(object):
return BaseDict(data, instance, name)
depth += 1
return data
dereference = DeReference()

View File

@ -277,8 +277,8 @@ class Document(BaseDocument):
.. versionadded:: 0.5
"""
from dereference import dereference
self._data = dereference(self._data, max_depth)
from dereference import DeReference
self._data = DeReference()(self._data, max_depth)
return self
def reload(self, max_depth=1):

View File

@ -1095,8 +1095,8 @@ class QuerySet(object):
.. versionadded:: 0.4
.. versionchanged:: 0.5 - Fixed handling references
"""
from dereference import dereference
return dereference(self._cursor.distinct(field), 1)
from dereference import DeReference
return DeReference()(self._cursor.distinct(field), 1)
def only(self, *fields):
"""Load only a subset of this document's fields. ::
@ -1747,10 +1747,10 @@ class QuerySet(object):
.. versionadded:: 0.5
"""
from dereference import dereference
from dereference import DeReference
# Make select related work the same for querysets
max_depth += 1
return dereference(self, max_depth=max_depth)
return DeReference()(self, max_depth=max_depth)
class QuerySetManager(object):