Commit dc29c583 authored by Sergey Markelov's avatar Sergey Markelov

*) Don't apply filter if the term is empty

   see https://github.com/mrjoes/flask-admin/pull/535
parent 1ca37549
...@@ -50,17 +50,18 @@ class QueryAjaxModelLoader(AjaxModelLoader): ...@@ -50,17 +50,18 @@ class QueryAjaxModelLoader(AjaxModelLoader):
def get_list(self, term, offset=0, limit=DEFAULT_PAGE_SIZE): def get_list(self, term, offset=0, limit=DEFAULT_PAGE_SIZE):
query = self.model.objects query = self.model.objects
criteria = None if len(term) > 0:
criteria = None
for field in self._cached_fields: for field in self._cached_fields:
flt = {u'%s__icontains' % field.name: term} flt = {u'%s__icontains' % field.name: term}
if not criteria: if not criteria:
criteria = mongoengine.Q(**flt) criteria = mongoengine.Q(**flt)
else: else:
criteria |= mongoengine.Q(**flt) criteria |= mongoengine.Q(**flt)
query = query.filter(criteria) query = query.filter(criteria)
if offset: if offset:
query = query.skip(offset) query = query.skip(offset)
......
...@@ -52,16 +52,17 @@ class QueryAjaxModelLoader(AjaxModelLoader): ...@@ -52,16 +52,17 @@ class QueryAjaxModelLoader(AjaxModelLoader):
def get_list(self, term, offset=0, limit=DEFAULT_PAGE_SIZE): def get_list(self, term, offset=0, limit=DEFAULT_PAGE_SIZE):
query = self.model.select() query = self.model.select()
stmt = None if len(term) > 0:
for field in self._cached_fields: stmt = None
q = field ** (u'%%%s%%' % term) for field in self._cached_fields:
q = field ** (u'%%%s%%' % term)
if stmt is None: if stmt is None:
stmt = q stmt = q
else: else:
stmt |= q stmt |= q
query = query.where(stmt) query = query.where(stmt)
if offset: if offset:
query = query.offset(offset) query = query.offset(offset)
......
...@@ -58,8 +58,9 @@ class QueryAjaxModelLoader(AjaxModelLoader): ...@@ -58,8 +58,9 @@ class QueryAjaxModelLoader(AjaxModelLoader):
def get_list(self, term, offset=0, limit=DEFAULT_PAGE_SIZE): def get_list(self, term, offset=0, limit=DEFAULT_PAGE_SIZE):
query = self.session.query(self.model) query = self.session.query(self.model)
filters = (field.like(u'%%%s%%' % term) for field in self._cached_fields) if len(term) > 0:
query = query.filter(or_(*filters)) filters = (field.like(u'%%%s%%' % term) for field in self._cached_fields)
query = query.filter(or_(*filters))
return query.offset(offset).limit(limit).all() return query.offset(offset).limit(limit).all()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment