[pricelist] serviceside filtering for ingredients

This commit is contained in:
Tim Gröger 2021-11-13 15:03:21 +01:00
parent 8fb74358e7
commit 526433afba
2 changed files with 12 additions and 2 deletions

View File

@ -220,15 +220,23 @@ def get_drinks(identifier=None):
offset = request.args.get("offset")
search_name = request.args.get("search_name")
search_key = request.args.get("search_key")
ingredient = request.args.get("ingredient", type=bool)
try:
if limit is not None:
limit = int(limit)
if offset is not None:
offset = int(offset)
if ingredient is not None:
ingredient = bool(ingredient)
except ValueError:
raise BadRequest
drinks, count = pricelist_controller.get_drinks(
public=public, limit=limit, offset=offset, search_name=search_name, search_key=search_key
public=public,
limit=limit,
offset=offset,
search_name=search_name,
search_key=search_key,
ingredient=ingredient,
)
logger.debug(f"GET drink {drinks}, {count}")
# return jsonify({"drinks": drinks, "count": count})

View File

@ -131,12 +131,14 @@ def _create_public_drink(drink):
return None
def get_drinks(name=None, public=False, limit=None, offset=None, search_name=None, search_key=None):
def get_drinks(name=None, public=False, limit=None, offset=None, search_name=None, search_key=None, ingredient=False):
count = None
if name:
query = Drink.query.filter(Drink.name.contains(name))
else:
query = Drink.query
if ingredient:
query = query.filter(Drink.cost_per_volume >= 0)
if search_name:
if search_key == "name":
query = query.filter(Drink.name.contains(search_name))