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