diff --git a/ordr3/__init__.py b/ordr3/__init__.py index 51e640c..b2cf134 100644 --- a/ordr3/__init__.py +++ b/ordr3/__init__.py @@ -3,7 +3,7 @@ A rewrite of our CPI ordering system. """ -__version__ = "1.1.1" +__version__ = "1.1.2" from pyramid.config import Configurator diff --git a/ordr3/templates/orders/list.jinja2 b/ordr3/templates/orders/list.jinja2 index 31656c4..d6723ea 100644 --- a/ordr3/templates/orders/list.jinja2 +++ b/ordr3/templates/orders/list.jinja2 @@ -7,34 +7,35 @@ -{% if request.has_permission("batch-edit", context) and query_defaults['user'] != '-purchaser-' %} - + -{% endif %} {% if query_defaults['user'] not in (None, request.user.username) %} {% endif %} diff --git a/ordr3/views/orders.py b/ordr3/views/orders.py index 4ef06d1..c0d84e6 100644 --- a/ordr3/views/orders.py +++ b/ordr3/views/orders.py @@ -19,6 +19,14 @@ def get_status(request): return None +def get_category(request): + category_param = request.GET.get("category", "") + try: + return models.OrderCategory[category_param.upper()] + except KeyError: + return None + + def get_multiple_orders(context, request): order_ids = {v for k, v in request.POST.items() if k == "selection"} return ( @@ -96,6 +104,7 @@ def order_list(context, request): limit = QUERY_LIMIT offset = get_offset(request) status = get_status(request) + category = get_category(request) username = request.GET.get("user", None) search = request.GET.get("search", None) @@ -104,6 +113,8 @@ def order_list(context, request): ) if status: query = query.filter(models.OrderItem.status == status) + if category: + query = query.filter(models.OrderItem.category == category) if username == "-purchaser-": query = ( query.distinct() @@ -129,8 +140,12 @@ def order_list(context, request): order_resources = [resources.Order.from_model(u, context) for u in orders] filter_status = "all" if status is None else status.name.lower() + filter_category = None if category is None else category.name.lower() query_defaults = DefaultQueryParams( - status=filter_status, user=username, search=search + status=filter_status, + user=username, + search=search, + category=filter_category, ) return { diff --git a/tests/functional/test_order_list.py b/tests/functional/test_order_list.py index 39bd35d..32462e9 100644 --- a/tests/functional/test_order_list.py +++ b/tests/functional/test_order_list.py @@ -17,6 +17,11 @@ def test_order_list(testapp, login_as, contains): response, Eppis=True, Ethanol=True, NaCl=False, Spritzen=False ) + response = testapp.get("/orders?category=biolab", status=200) + assert contains( + response, Eppis=True, Ethanol=False, NaCl=False, Spritzen=True + ) + response = testapp.get("/orders?user=TestAdmin", status=200) assert contains( response, Eppis=False, Ethanol=True, NaCl=True, Spritzen=False