Browse Source

added filter for synthesis

funding-tag
Holger Frey 3 years ago
parent
commit
465d63bc7f
  1. 2
      ordr3/__init__.py
  2. 25
      ordr3/templates/orders/list.jinja2
  3. 17
      ordr3/views/orders.py
  4. 5
      tests/functional/test_order_list.py

2
ordr3/__init__.py

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
A rewrite of our CPI ordering system.
"""
__version__ = "1.1.1"
__version__ = "1.1.2"
from pyramid.config import Configurator

25
ordr3/templates/orders/list.jinja2

@ -7,34 +7,35 @@ @@ -7,34 +7,35 @@
<nav class="nav nav-pills flex-column">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">All Orders</div>
<a class="nav-link {% if query_defaults['status'] == 'all' and not query_defaults['user'] and not query_defaults['search'] %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user=None, search=None)) }}">All</a>
<a class="nav-link {% if query_defaults['status'] == 'all' and not query_defaults['user'] and not query_defaults['search'] and not query_defaults['category'] %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user=None, search=None, category=None)) }}">All</a>
{% for status in stati %}
<a class="nav-link {% if query_defaults['status'] == status.name.lower() and not query_defaults['user'] %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=status.name.lower(), user=None, search=None)) }}">{{status.name.lower()}}</a>
<a class="nav-link {% if query_defaults['status'] == status.name.lower() and not query_defaults['user'] %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=status.name.lower(), user=None, search=None, category=None)) }}">{{status.name.lower()}}</a>
{% endfor %}
</nav>
<nav class="nav nav-pills flex-column mt-3">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">My Orders</div>
<a class="nav-link {% if query_defaults['status'] == 'all' and query_defaults['user'] == request.user.username %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user=request.user.username, search=None)) }}">All</a>
<a class="nav-link {% if query_defaults['status'] == 'all' and query_defaults['user'] == request.user.username %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user=request.user.username, search=None, category=None)) }}">All</a>
{% for status in stati %}
<a class="nav-link {% if query_defaults['status'] == status.name.lower() and query_defaults['user'] == request.user.username %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=status.name.lower(), user=request.user.username, search=None)) }}">{{status.name.lower()}}</a>
<a class="nav-link {% if query_defaults['status'] == status.name.lower() and query_defaults['user'] == request.user.username %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=status.name.lower(), user=request.user.username, search=None, category=None)) }}">{{status.name.lower()}}</a>
{% endfor %}
</nav>
{% if request.has_permission("batch-edit", context) and query_defaults['user'] != '-purchaser-' %}
<nav class="nav nav-pills flex-column mt-3">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">Specials</div>
<a class="nav-link {% if query_defaults['user'] == '-purchaser-' %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user='-purchaser-', search=None)) }}">Edited by me</a>
</nav>
<nav class="nav nav-pills flex-column mt-3">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">Specials</div>
<a class="nav-link {% if query_defaults['category'] == 'synthesis' %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user=None, search=None, category='synthesis')) }}">CPI Synthesis</a>
{% if request.has_permission("batch-edit", context) and query_defaults['user'] != '-purchaser-' %}
<a class="nav-link {% if query_defaults['user'] == '-purchaser-' %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user='-purchaser-', search=None, category=None)) }}">Edited by me</a>
{% endif %}
</nav>
{% endif %}
{% if query_defaults['user'] not in (None, request.user.username) %}
<nav class="nav nav-pills flex-column mt-3">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">{{ query_defaults['user'] if query_defaults['user'] != '-purchaser-' else "Edited By Me" }}</div>
<a class="nav-link {% if query_defaults['status'] == 'all' %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user=query_defaults['user'], search=None)) }}">All</a>
<a class="nav-link {% if query_defaults['status'] == 'all' %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=None, user=query_defaults['user'], search=None, category=None)) }}">All</a>
{% for status in stati %}
<a class="nav-link {% if query_defaults['status'] == status.name.lower() %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=status.name.lower(), user=query_defaults['user'], search=None)) }}">{{status.name.lower()}}</a>
<a class="nav-link {% if query_defaults['status'] == status.name.lower() %}active{% endif %}" href="{{ context|resource_url(query=query_defaults(status=status.name.lower(), user=query_defaults['user'], search=None, category=None)) }}">{{status.name.lower()}}</a>
{% endfor %}
</nav>
{% endif %}

17
ordr3/views/orders.py

@ -19,6 +19,14 @@ def get_status(request): @@ -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): @@ -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): @@ -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): @@ -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 {

5
tests/functional/test_order_list.py

@ -17,6 +17,11 @@ def test_order_list(testapp, login_as, contains): @@ -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

Loading…
Cancel
Save