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