From b2d87940d6ec6e6438019da1c0aec9c9f9157498 Mon Sep 17 00:00:00 2001 From: Marti Raudsepp Date: Tue, 12 Dec 2017 19:44:53 +0200 Subject: [PATCH] Allow sorting and filtering by camelCase field names (#1019) The API exposes camelCase field names everywhere, but only accepted underscore_field_names in 'filter' or 'sort' GET attributes. Now both are allowed. --- lemur/database.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lemur/database.py b/lemur/database.py index 99b51fb0..9198c9ce 100644 --- a/lemur/database.py +++ b/lemur/database.py @@ -9,6 +9,7 @@ .. moduleauthor:: Kevin Glisson """ +from inflection import underscore from sqlalchemy import exc from sqlalchemy.sql import and_, or_ from sqlalchemy.orm import make_transient @@ -198,7 +199,7 @@ def filter(query, model, terms): :param terms: :return: """ - column = get_model_column(model, terms[0]) + column = get_model_column(model, underscore(terms[0])) return query.filter(column.ilike('%{}%'.format(terms[1]))) @@ -212,7 +213,7 @@ def sort(query, model, field, direction): :param field: :param direction: """ - column = get_model_column(model, field) + column = get_model_column(model, underscore(field)) return query.order_by(column.desc() if direction == 'desc' else column.asc())