diff --git a/gaehsnitz/static/suff/style.css b/gaehsnitz/static/suff/style.css index e6d39eb..365adda 100644 --- a/gaehsnitz/static/suff/style.css +++ b/gaehsnitz/static/suff/style.css @@ -356,6 +356,19 @@ section { } +.drink-group-heading { + font-size: 0.95rem; + font-weight: bold; + color: #EE9933; + margin: 14px 0 8px 4px; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.drink-group-heading:first-child { + margin-top: 0; +} + .drink-grid { display: grid; grid-template-columns: repeat(2, 1fr); diff --git a/gaehsnitz/suff.py b/gaehsnitz/suff.py index aa8df24..4eceb14 100644 --- a/gaehsnitz/suff.py +++ b/gaehsnitz/suff.py @@ -7,7 +7,7 @@ from django.contrib.admin.views.decorators import staff_member_required from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required from django.contrib.auth import get_user_model -from django.db.models import Case, Count, F, IntegerField, Sum, Value, When +from django.db.models import Case, CharField, Count, F, IntegerField, Sum, Value, When from django.http import Http404, HttpResponseRedirect from django.shortcuts import render from django.urls import reverse @@ -108,6 +108,16 @@ def _drink_grid_qs(): return ( Drink.objects.filter(year=current_year()) .annotate( + alcohol_order=Case( + When(category__in=["beer", "radler"], then=Value(0)), + default=Value(1), + output_field=IntegerField(), + ), + alcohol_label=Case( + When(category__in=["beer", "radler"], then=Value("mit Alkohol")), + default=Value("ohne Alkohol"), + output_field=CharField(), + ), category_order=Case( When(category="beer", then=Value(0)), When(category="alc_free_beer", then=Value(1)), @@ -117,9 +127,9 @@ def _drink_grid_qs(): When(category="water", then=Value(5)), default=Value(99), output_field=IntegerField(), - ) + ), ) - .order_by("category_order", "name") + .order_by("alcohol_order", "category_order", "name") ) diff --git a/gaehsnitz/templates/suff/me.html b/gaehsnitz/templates/suff/me.html index 135ccb0..7ce9eb9 100644 --- a/gaehsnitz/templates/suff/me.html +++ b/gaehsnitz/templates/suff/me.html @@ -73,15 +73,19 @@ }); }); -
- {% for drink in drinks %} - - {% endfor %} -
+ {% regroup drinks by alcohol_label as drink_groups %} + {% for group in drink_groups %} +

{{ group.grouper }}

+
+ {% for drink in group.list %} + + {% endfor %} +
+ {% endfor %} {% endif %} diff --git a/gaehsnitz/templates/suff/staff_user.html b/gaehsnitz/templates/suff/staff_user.html index 3eb3000..10e69c7 100644 --- a/gaehsnitz/templates/suff/staff_user.html +++ b/gaehsnitz/templates/suff/staff_user.html @@ -57,19 +57,25 @@ Gratis (z.B. Artists am Spieltag) - -
- {% for drink in drinks %} - - {% endfor %} -
+ {% if not is_anonymous_target %} + + {% endif %} + {% regroup drinks by alcohol_label as drink_groups %} + {% for group in drink_groups %} +

{{ group.grouper }}

+
+ {% for drink in group.list %} + + {% endfor %} +
+ {% endfor %} {% endif %}