Fix Issue#115: Possibility to bypass class_name check in queryset.
This commit is contained in:
parent
846f5a868f
commit
34b923b7ac
@ -285,6 +285,7 @@ class QuerySet(object):
|
||||
self._ordering = []
|
||||
self._snapshot = False
|
||||
self._timeout = True
|
||||
self._class_check = True
|
||||
|
||||
# If inheritance is allowed, only return instances and instances of
|
||||
# subclasses of the class being used
|
||||
@ -298,6 +299,7 @@ class QuerySet(object):
|
||||
def _query(self):
|
||||
if self._mongo_query is None:
|
||||
self._mongo_query = self._query_obj.to_query(self._document)
|
||||
if self._class_check:
|
||||
self._mongo_query.update(self._initial_query)
|
||||
return self._mongo_query
|
||||
|
||||
@ -349,7 +351,7 @@ class QuerySet(object):
|
||||
|
||||
return index_list
|
||||
|
||||
def __call__(self, q_obj=None, **query):
|
||||
def __call__(self, q_obj=None, class_check=True, **query):
|
||||
"""Filter the selected documents by calling the
|
||||
:class:`~mongoengine.queryset.QuerySet` with a query.
|
||||
|
||||
@ -357,6 +359,8 @@ class QuerySet(object):
|
||||
the query; the :class:`~mongoengine.queryset.QuerySet` is filtered
|
||||
multiple times with different :class:`~mongoengine.queryset.Q`
|
||||
objects, only the last one will be used
|
||||
:param class_check: If set to False bypass class name check when
|
||||
querying collection
|
||||
:param query: Django-style query keyword arguments
|
||||
"""
|
||||
#if q_obj:
|
||||
@ -367,6 +371,7 @@ class QuerySet(object):
|
||||
self._query_obj &= query
|
||||
self._mongo_query = None
|
||||
self._cursor_obj = None
|
||||
self._class_check = class_check
|
||||
return self
|
||||
|
||||
def filter(self, *q_objs, **query):
|
||||
|
Loading…
x
Reference in New Issue
Block a user