Merge branch 'master' into dev
Conflicts: mongoengine/queryset.py
This commit is contained in:
		| @@ -12,7 +12,7 @@ from signals import * | ||||
| __all__ = (document.__all__ + fields.__all__ + connection.__all__ + | ||||
|            queryset.__all__ + signals.__all__) | ||||
|  | ||||
| VERSION = (0, 6, 18) | ||||
| VERSION = (0, 6, 20) | ||||
|  | ||||
|  | ||||
| def get_version(): | ||||
|   | ||||
| @@ -34,7 +34,9 @@ class DeReference(object): | ||||
|  | ||||
|         doc_type = None | ||||
|         if instance and instance._fields: | ||||
|             doc_type = instance._fields[name].field | ||||
|             doc_type = instance._fields[name] | ||||
|             if hasattr(doc_type, 'field'): | ||||
|                 doc_type = doc_type.field | ||||
|  | ||||
|             if isinstance(doc_type, ReferenceField): | ||||
|                 doc_type = doc_type.document_type | ||||
|   | ||||
| @@ -1327,7 +1327,7 @@ class UUIDField(BaseField): | ||||
|         super(UUIDField, self).__init__(**kwargs) | ||||
|  | ||||
|     def to_python(self, value): | ||||
|         if not self.binary: | ||||
|         if not self._binary: | ||||
|             if not isinstance(value, basestring): | ||||
|                 value = unicode(value) | ||||
|             return uuid.UUID(value) | ||||
|   | ||||
| @@ -765,8 +765,22 @@ class QuerySet(object): | ||||
|             key = '.'.join(parts) | ||||
|             if op is None or key not in mongo_query: | ||||
|                 mongo_query[key] = value | ||||
|             elif key in mongo_query and isinstance(mongo_query[key], dict): | ||||
|                 mongo_query[key].update(value) | ||||
|             elif key in mongo_query: | ||||
|                 if isinstance(mongo_query[key], dict) and isinstance(value, dict): | ||||
|                     mongo_query[key].update(value) | ||||
|                 elif isinstance(mongo_query[key], list): | ||||
|                     mongo_query[key].append(value) | ||||
|                 else: | ||||
|                     mongo_query[key] = [mongo_query[key], value] | ||||
|  | ||||
|         for k, v in mongo_query.items(): | ||||
|             if isinstance(v, list): | ||||
|                 value = [{k:val} for val in v] | ||||
|                 if '$and' in mongo_query.keys(): | ||||
|                     mongo_query['$and'].append(value) | ||||
|                 else: | ||||
|                     mongo_query['$and'] = value | ||||
|                 del mongo_query[k] | ||||
|  | ||||
|         return mongo_query | ||||
|  | ||||
| @@ -1152,8 +1166,10 @@ class QuerySet(object): | ||||
|  | ||||
|         .. versionadded:: 0.4 | ||||
|         .. versionchanged:: 0.5 - Fixed handling references | ||||
|         .. versionchanged:: 0.6 - Improved db_field refrence handling | ||||
|         """ | ||||
|         return self._dereference(self._cursor.distinct(field), 1) | ||||
|         return self._dereference(self._cursor.distinct(field), 1, | ||||
|                                  name=field, instance=self._document) | ||||
|  | ||||
|     def only(self, *fields): | ||||
|         """Load only a subset of this document's fields. :: | ||||
| @@ -1866,6 +1882,17 @@ class QuerySet(object): | ||||
|  | ||||
|  | ||||
| class QuerySetManager(object): | ||||
|     """ | ||||
|     The default QuerySet Manager. | ||||
|  | ||||
|     Custom QuerySet Manager functions can extend this class and users can | ||||
|     add extra queryset functionality.  Any custom manager methods must accept a | ||||
|     :class:`~mongoengine.Document` class as its first argument, and a | ||||
|     :class:`~mongoengine.queryset.QuerySet` as its second argument. | ||||
|  | ||||
|     The method function should return a :class:`~mongoengine.queryset.QuerySet` | ||||
|     , probably the same one that was passed in, but modified in some way. | ||||
|     """ | ||||
|  | ||||
|     get_queryset = None | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user