Fix Issue#115: Possibility to bypass class_name check in queryset.
This commit is contained in:
		@@ -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,7 +299,8 @@ class QuerySet(object):
 | 
			
		||||
    def _query(self):
 | 
			
		||||
        if self._mongo_query is None:
 | 
			
		||||
            self._mongo_query = self._query_obj.to_query(self._document)
 | 
			
		||||
            self._mongo_query.update(self._initial_query)
 | 
			
		||||
            if self._class_check:
 | 
			
		||||
                self._mongo_query.update(self._initial_query)
 | 
			
		||||
        return self._mongo_query
 | 
			
		||||
 | 
			
		||||
    def ensure_index(self, key_or_list, drop_dups=False, background=False,
 | 
			
		||||
@@ -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):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user