Browse Source

added filter for synthesis

funding-tag
Holger Frey 4 years ago
parent
commit
465d63bc7f
  1. 2
      ordr3/__init__.py
  2. 19
      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 @@
A rewrite of our CPI ordering system. A rewrite of our CPI ordering system.
""" """
__version__ = "1.1.1" __version__ = "1.1.2"
from pyramid.config import Configurator from pyramid.config import Configurator

19
ordr3/templates/orders/list.jinja2

@ -7,34 +7,35 @@
<nav class="nav nav-pills flex-column"> <nav class="nav nav-pills flex-column">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">All Orders</div> <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 %} {% 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 %} {% endfor %}
</nav> </nav>
<nav class="nav nav-pills flex-column mt-3"> <nav class="nav nav-pills flex-column mt-3">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">My Orders</div> <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 %} {% 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 %} {% endfor %}
</nav> </nav>
{% if request.has_permission("batch-edit", context) and query_defaults['user'] != '-purchaser-' %}
<nav class="nav nav-pills flex-column mt-3"> <nav class="nav nav-pills flex-column mt-3">
<div class="nav-link disabled text-small" tabindex="-1" aria-disabled="true">Specials</div> <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> <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> </nav>
{% endif %}
{% if query_defaults['user'] not in (None, request.user.username) %} {% if query_defaults['user'] not in (None, request.user.username) %}
<nav class="nav nav-pills flex-column mt-3"> <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> <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 %} {% 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 %} {% endfor %}
</nav> </nav>
{% endif %} {% endif %}

17
ordr3/views/orders.py

@ -19,6 +19,14 @@ def get_status(request):
return None 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): def get_multiple_orders(context, request):
order_ids = {v for k, v in request.POST.items() if k == "selection"} order_ids = {v for k, v in request.POST.items() if k == "selection"}
return ( return (
@ -96,6 +104,7 @@ def order_list(context, request):
limit = QUERY_LIMIT limit = QUERY_LIMIT
offset = get_offset(request) offset = get_offset(request)
status = get_status(request) status = get_status(request)
category = get_category(request)
username = request.GET.get("user", None) username = request.GET.get("user", None)
search = request.GET.get("search", None) search = request.GET.get("search", None)
@ -104,6 +113,8 @@ def order_list(context, request):
) )
if status: if status:
query = query.filter(models.OrderItem.status == status) query = query.filter(models.OrderItem.status == status)
if category:
query = query.filter(models.OrderItem.category == category)
if username == "-purchaser-": if username == "-purchaser-":
query = ( query = (
query.distinct() query.distinct()
@ -129,8 +140,12 @@ def order_list(context, request):
order_resources = [resources.Order.from_model(u, context) for u in orders] order_resources = [resources.Order.from_model(u, context) for u in orders]
filter_status = "all" if status is None else status.name.lower() 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( query_defaults = DefaultQueryParams(
status=filter_status, user=username, search=search status=filter_status,
user=username,
search=search,
category=filter_category,
) )
return { return {

5
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, 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) response = testapp.get("/orders?user=TestAdmin", status=200)
assert contains( assert contains(
response, Eppis=False, Ethanol=True, NaCl=True, Spritzen=False response, Eppis=False, Ethanol=True, NaCl=True, Spritzen=False

Loading…
Cancel
Save