From 8bf109fb0ba1845a083629e0546773dc257ef763 Mon Sep 17 00:00:00 2001 From: Holger Frey Date: Wed, 3 Nov 2021 12:00:55 +0100 Subject: [PATCH 1/2] marked passwords in tests for linting --- tests/functional/test_login.py | 10 +++++----- tests/functional/test_password_reset.py | 18 +++++++++--------- tests/functional/test_registration.py | 12 ++++++------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/functional/test_login.py b/tests/functional/test_login.py index cf2a7a0..a700b28 100644 --- a/tests/functional/test_login.py +++ b/tests/functional/test_login.py @@ -8,7 +8,7 @@ def test_login_ok(testapp): form = response.form form["username"] = "TestAdmin" - form["password"] = "jane" + form["password"] = "jane" # noqa: S105 response = form.submit("submit").follow() assert "My Orders" in response @@ -20,7 +20,7 @@ def test_login_wrong_username(testapp): form = response.form form["username"] = "XXAdmin" - form["password"] = "jane" + form["password"] = "jane" # noqa: S105 response = form.submit("Log In") assert "Credentials are invalid" in response @@ -32,7 +32,7 @@ def test_login_wrong_password(testapp): form = response.form form["username"] = "TestAdmin" - form["password"] = "wrong password" + form["password"] = "wrong password" # noqa: S105 response = form.submit("Log In") assert "Credentials are invalid" in response @@ -44,7 +44,7 @@ def test_login_fails_inactive_user(testapp): form = response.form form["username"] = "TestInactive" - form["password"] = "peter" + form["password"] = "peter" # noqa: S105 response = form.submit("Log In") assert "Credentials are invalid" in response @@ -56,7 +56,7 @@ def test_logout(testapp): form = response.form form["username"] = "TestAdmin" - form["password"] = "jane" + form["password"] = "jane" # noqa: S105 response = form.submit("submit").follow() assert "My Orders" in response diff --git a/tests/functional/test_password_reset.py b/tests/functional/test_password_reset.py index a21c86a..a456760 100644 --- a/tests/functional/test_password_reset.py +++ b/tests/functional/test_password_reset.py @@ -8,7 +8,7 @@ def test_password_reset(testapp, parse_latest_mail): form = response.form form["username"] = "TestAdmin" - form["password"] = "jixx" + form["password"] = "jixx" # noqa: S105 response = form.submit("Log In") assert "Credentials are invalid" in response @@ -27,21 +27,21 @@ def test_password_reset(testapp, parse_latest_mail): assert "You can now set a new password" in response form = response.form - form["new_password"] = "jixx" + form["new_password"] = "jixx" # noqa: S105 response = form.submit("Reset_Password").follow() assert "You changed your Password." in response response = testapp.get("/", status=302).follow() form = response.form form["username"] = "TestAdmin" - form["password"] = "jane" + form["password"] = "jane" # noqa: S105 response = form.submit("Log In") assert "Credentials are invalid" in response response = testapp.get("/", status=302).follow() form = response.form form["username"] = "TestAdmin" - form["password"] = "jixx" + form["password"] = "jixx" # noqa: S105 response = form.submit("Log In").follow() assert "My Orders" in response @@ -100,14 +100,14 @@ def test_password_reset_cancel_after_token(testapp, parse_latest_mail): assert "You can now set a new password" in response form = response.form - form["new_password"] = "jixx" + form["new_password"] = "jixx" # noqa: S105 response = form.submit("Cancel").follow(status=302).follow() assert "Please Log In" in response response = testapp.get("/", status=302).follow() form = response.form form["username"] = "TestAdmin" - form["password"] = "jane" + form["password"] = "jane" # noqa: S105 response = form.submit("Log In").follow() assert "My Orders" in response @@ -132,7 +132,7 @@ def test_password_reset_empty_password(testapp, parse_latest_mail): assert "You can now set a new password" in response form = response.form - form["new_password"] = "" + form["new_password"] = "" # noqa: S105 response = form.submit("Reset_Password") assert "There was a problem with your submission" in response @@ -167,12 +167,12 @@ def test_password_reset_form_invalid_token(testapp, parse_latest_mail): form = response.form form.action = "/reset?t=invalid" - form["new_password"] = "jixx" + form["new_password"] = "jixx" # noqa: S105 response = form.submit("Reset_Password").follow(status=302).follow() assert "Please Log In" in response form = response.form form["username"] = "TestAdmin" - form["password"] = "jane" + form["password"] = "jane" # noqa: S105 response = form.submit("Log In").follow() assert "My Orders" in response diff --git a/tests/functional/test_registration.py b/tests/functional/test_registration.py index d7ee5c3..de808b6 100644 --- a/tests/functional/test_registration.py +++ b/tests/functional/test_registration.py @@ -14,7 +14,7 @@ def test_registration_procedure(testapp, login_as, parse_latest_mail): form["first_name"] = "Eric" form["last_name"] = "Idle" form["email"] = "eric@example.com" - form["password"] = "eric" + form["password"] = "eric" # noqa: S105 response = form.submit("Create_Account").follow() assert "The account needs to be activated" in response @@ -77,7 +77,7 @@ def test_registration_procedure_not_unique_username( form["first_name"] = "Eric" form["last_name"] = "Idle" form["email"] = "eric@example.com" - form["password"] = "eric" + form["password"] = "eric" # noqa: S105 response = form.submit("Create_Account") assert "There was a problem with your submission" in response @@ -98,7 +98,7 @@ def test_registration_procedure_not_unique_email( form["first_name"] = "Eric" form["last_name"] = "Idle" form["email"] = "jane@example.com" - form["password"] = "eric" + form["password"] = "eric" # noqa: S105 response = form.submit("Create_Account") assert "There was a problem with your submission" in response @@ -115,12 +115,12 @@ def test_registration_procedure_bad_csrf_token( assert "Register a new account" in response form = response.form - form["csrf_token"] = "bad token" + form["csrf_token"] = "bad token" # noqa: S105 form["user_name"] = "TestNew" form["first_name"] = "Eric" form["last_name"] = "Idle" form["email"] = "eric@example.com" - form["password"] = "eric" + form["password"] = "eric" # noqa: S105 form.submit("Create_Account", status=400) @@ -138,6 +138,6 @@ def test_registration_procedure_canceled(testapp, login_as, parse_latest_mail): form["first_name"] = "Eric" form["last_name"] = "Idle" form["email"] = "eric@example.com" - form["password"] = "eric" + form["password"] = "eric" # noqa: S105 response = form.submit("Cancel").follow(status=302).follow() assert "Please Log In" in response From 465d63bc7f38df5eb1da23d2dd7559dce80f31c8 Mon Sep 17 00:00:00 2001 From: Holger Frey Date: Wed, 3 Nov 2021 12:38:13 +0100 Subject: [PATCH 2/2] added filter for synthesis --- ordr3/__init__.py | 2 +- ordr3/templates/orders/list.jinja2 | 25 +++++++++++++------------ ordr3/views/orders.py | 17 ++++++++++++++++- tests/functional/test_order_list.py | 5 +++++ 4 files changed, 35 insertions(+), 14 deletions(-) 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