Skip to content

Commit

Permalink
Fixed bug with numeric filters, converting to correct python type
Browse files Browse the repository at this point in the history
  • Loading branch information
dpgaspar committed May 18, 2016
1 parent 023fee7 commit c45a559
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
1 change: 0 additions & 1 deletion examples/quickhowto/app/views.py
Expand Up @@ -105,4 +105,3 @@ class ContactTimeChartView(GroupByChartView):
appbuilder.add_separator("Contacts")
appbuilder.add_view(ContactChartView, "Contacts Chart", icon="fa-dashboard", category="Contacts")
appbuilder.add_view(ContactTimeChartView, "Contacts Birth Chart", icon="fa-dashboard", category="Contacts")

21 changes: 15 additions & 6 deletions flask_appbuilder/models/sqla/filters.py
Expand Up @@ -26,6 +26,17 @@ def get_field_setup_query(query, model, column_name):
else:
return query, getattr(model, column_name)


def set_value_to_type(datamodel, column_name, value):
if datamodel.is_integer(column_name):
return int(value)
elif datamodel.is_float(column_name):
return float(value)
elif datamodel.is_boolean(column_name):
if value == 'y':
return True


class FilterStartsWith(BaseFilter):
name = lazy_gettext('Starts with')

Expand Down Expand Up @@ -79,9 +90,7 @@ class FilterEqual(BaseFilter):

def apply(self, query, value):
query, field = get_field_setup_query(query, self.model, self.column_name)
if self.datamodel.is_boolean(self.column_name):
if value == 'y':
value = True
value = set_value_to_type(self.datamodel, self.column_name, value)
return query.filter(field == value)


Expand All @@ -90,9 +99,7 @@ class FilterNotEqual(BaseFilter):

def apply(self, query, value):
query, field = get_field_setup_query(query, self.model, self.column_name)
if self.datamodel.is_boolean(self.column_name):
if value == 'y':
value = True
value = set_value_to_type(self.datamodel, self.column_name, value)
return query.filter(field != value)


Expand All @@ -101,6 +108,7 @@ class FilterGreater(BaseFilter):

def apply(self, query, value):
query, field = get_field_setup_query(query, self.model, self.column_name)
value = set_value_to_type(self.datamodel, self.column_name, value)
return query.filter(field > value)


Expand All @@ -109,6 +117,7 @@ class FilterSmaller(BaseFilter):

def apply(self, query, value):
query, field = get_field_setup_query(query, self.model, self.column_name)
value = set_value_to_type(self.datamodel, self.column_name, value)
return query.filter(field < value)


Expand Down

0 comments on commit c45a559

Please sign in to comment.