minor cleanup

This commit is contained in:
Stefan Wojcik 2017-02-06 19:29:35 -07:00
parent 515ffac246
commit 8a6f36256e
2 changed files with 19 additions and 19 deletions

View File

@ -706,23 +706,20 @@ class BaseQuerySet(object):
with switch_db(self._document, alias) as cls: with switch_db(self._document, alias) as cls:
collection = cls._get_collection() collection = cls._get_collection()
return self.clone_into(self.__class__(self._document, collection)) return self._clone_into(self.__class__(self._document, collection))
def clone(self): def clone(self):
"""Creates a copy of the current """Create a copy of the current queryset."""
:class:`~mongoengine.queryset.QuerySet` return self._clone_into(self.__class__(self._document, self._collection_obj))
.. versionadded:: 0.5 def _clone_into(self, new_qs):
"""Copy all of the relevant properties of this queryset to
a new queryset (which has to be an instance of
:class:`~mongoengine.queryset.base.BaseQuerySet`).
""" """
return self.clone_into(self.__class__(self._document, self._collection_obj)) if not isinstance(new_qs, BaseQuerySet):
def clone_into(self, cls):
"""Creates a copy of the current
:class:`~mongoengine.queryset.base.BaseQuerySet` into another child class
"""
if not isinstance(cls, BaseQuerySet):
raise OperationError( raise OperationError(
'%s is not a subclass of BaseQuerySet' % cls.__name__) '%s is not a subclass of BaseQuerySet' % new_qs.__name__)
copy_props = ('_mongo_query', '_initial_query', '_none', '_query_obj', copy_props = ('_mongo_query', '_initial_query', '_none', '_query_obj',
'_where_clause', '_loaded_fields', '_ordering', '_snapshot', '_where_clause', '_loaded_fields', '_ordering', '_snapshot',
@ -733,12 +730,12 @@ class BaseQuerySet(object):
for prop in copy_props: for prop in copy_props:
val = getattr(self, prop) val = getattr(self, prop)
setattr(cls, prop, copy.copy(val)) setattr(new_qs, prop, copy.copy(val))
if self._cursor_obj: if self._cursor_obj:
cls._cursor_obj = self._cursor_obj.clone() new_qs._cursor_obj = self._cursor_obj.clone()
return cls return new_qs
def select_related(self, max_depth=1): def select_related(self, max_depth=1):
"""Handles dereferencing of :class:`~bson.dbref.DBRef` objects or """Handles dereferencing of :class:`~bson.dbref.DBRef` objects or
@ -760,7 +757,8 @@ class BaseQuerySet(object):
""" """
queryset = self.clone() queryset = self.clone()
queryset._limit = n if n != 0 else 1 queryset._limit = n if n != 0 else 1
# Return self to allow chaining
# Return the new queryset to allow chaining
return queryset return queryset
def skip(self, n): def skip(self, n):

View File

@ -136,13 +136,15 @@ class QuerySet(BaseQuerySet):
return self._len return self._len
def no_cache(self): def no_cache(self):
"""Convert to a non_caching queryset """Convert to a non-caching queryset
.. versionadded:: 0.8.3 Convert to non caching queryset .. versionadded:: 0.8.3 Convert to non caching queryset
""" """
if self._result_cache is not None: if self._result_cache is not None:
raise OperationError('QuerySet already cached') raise OperationError('QuerySet already cached')
return self.clone_into(QuerySetNoCache(self._document, self._collection))
return self._clone_into(QuerySetNoCache(self._document,
self._collection))
class QuerySetNoCache(BaseQuerySet): class QuerySetNoCache(BaseQuerySet):
@ -153,7 +155,7 @@ class QuerySetNoCache(BaseQuerySet):
.. versionadded:: 0.8.3 Convert to caching queryset .. versionadded:: 0.8.3 Convert to caching queryset
""" """
return self.clone_into(QuerySet(self._document, self._collection)) return self._clone_into(QuerySet(self._document, self._collection))
def __repr__(self): def __repr__(self):
"""Provides the string representation of the QuerySet """Provides the string representation of the QuerySet