DeReference is now used in a thread safe manner
No global / module instance is needed Fixes #399
This commit is contained in:
		| @@ -234,8 +234,8 @@ class ComplexBaseField(BaseField): | |||||||
|             return self |             return self | ||||||
|  |  | ||||||
|         if not self._dereference and instance._initialised: |         if not self._dereference and instance._initialised: | ||||||
|             from dereference import dereference |             from dereference import DeReference | ||||||
|             self._dereference = dereference  # Cached |             self._dereference = DeReference()  # Cached | ||||||
|             instance._data[self.name] = self._dereference( |             instance._data[self.name] = self._dereference( | ||||||
|                 instance._data.get(self.name), max_depth=1, instance=instance, |                 instance._data.get(self.name), max_depth=1, instance=instance, | ||||||
|                 name=self.name |                 name=self.name | ||||||
|   | |||||||
| @@ -186,5 +186,3 @@ class DeReference(object): | |||||||
|             return BaseDict(data, instance, name) |             return BaseDict(data, instance, name) | ||||||
|         depth += 1 |         depth += 1 | ||||||
|         return data |         return data | ||||||
|  |  | ||||||
| dereference = DeReference() |  | ||||||
|   | |||||||
| @@ -277,8 +277,8 @@ class Document(BaseDocument): | |||||||
|  |  | ||||||
|         .. versionadded:: 0.5 |         .. versionadded:: 0.5 | ||||||
|         """ |         """ | ||||||
|         from dereference import dereference |         from dereference import DeReference | ||||||
|         self._data = dereference(self._data, max_depth) |         self._data = DeReference()(self._data, max_depth) | ||||||
|         return self |         return self | ||||||
|  |  | ||||||
|     def reload(self, max_depth=1): |     def reload(self, max_depth=1): | ||||||
|   | |||||||
| @@ -1095,8 +1095,8 @@ class QuerySet(object): | |||||||
|         .. versionadded:: 0.4 |         .. versionadded:: 0.4 | ||||||
|         .. versionchanged:: 0.5 - Fixed handling references |         .. versionchanged:: 0.5 - Fixed handling references | ||||||
|         """ |         """ | ||||||
|         from dereference import dereference |         from dereference import DeReference | ||||||
|         return dereference(self._cursor.distinct(field), 1) |         return DeReference()(self._cursor.distinct(field), 1) | ||||||
|  |  | ||||||
|     def only(self, *fields): |     def only(self, *fields): | ||||||
|         """Load only a subset of this document's fields. :: |         """Load only a subset of this document's fields. :: | ||||||
| @@ -1747,10 +1747,10 @@ class QuerySet(object): | |||||||
|  |  | ||||||
|         .. versionadded:: 0.5 |         .. versionadded:: 0.5 | ||||||
|         """ |         """ | ||||||
|         from dereference import dereference |         from dereference import DeReference | ||||||
|         # Make select related work the same for querysets |         # Make select related work the same for querysets | ||||||
|         max_depth += 1 |         max_depth += 1 | ||||||
|         return dereference(self, max_depth=max_depth) |         return DeReference()(self, max_depth=max_depth) | ||||||
|  |  | ||||||
|  |  | ||||||
| class QuerySetManager(object): | class QuerySetManager(object): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user