Commit 8dd9ccfa authored by Serge S. Koval's avatar Serge S. Koval

Fixed #104. Do not apply filter joins if filter is not enabled

parent 73a16803
......@@ -53,7 +53,6 @@ class Post(db.Model):
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(64))
value = db.Column(db.Boolean())
def __unicode__(self):
return self.name
......
......@@ -354,6 +354,7 @@ class ModelView(BaseModelView):
if attr is None:
raise Exception('Failed to find field for filter: %s' % name)
# Figure out filters for related column
if hasattr(attr, 'property') and hasattr(attr.property, 'direction'):
filters = []
......@@ -500,19 +501,19 @@ class ModelView(BaseModelView):
query = query.filter(or_(*filter_stmt))
# Apply filters
if self._filters:
# Apply search-related joins
if self._filter_joins:
new_joins = set(self._filter_joins.keys()) - joins
for jn in new_joins:
query = query.join(self._filter_joins[jn])
joins |= new_joins
# Apply filter values
for flt, value in filters:
query = self._filters[flt].apply(query, value)
if filters and self._filters:
for idx, value in filters:
flt = self._filters[idx]
# Figure out join
tbl = flt.column.table.name
join = self._filter_joins.get(tbl)
if join is not None:
query = query.join(join)
joins.add(tbl)
# Apply filter
query = flt.apply(query, value)
# Calculate number of rows
count = query.count()
......
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