Show quota list for all subevents

This commit is contained in:
Phin Wolkwitz
2024-01-22 16:39:03 +01:00
parent e68cea8542
commit 5ebaa63f6f
3 changed files with 46 additions and 27 deletions
@@ -269,7 +269,7 @@
<div class="panel-heading">
<h3 class="panel-title">{% trans "Quotas" %}</h3>
</div>
<div class="table-responsive">
<div class="table-responsive table-quotas">
<table class="table table-hover table-quotas">
<thead>
<tr>
@@ -287,33 +287,37 @@
</tr>
</thead>
<tbody>
{% if request.event.has_subevents and not subevent %}
{% for s in subevents %}
<td>
<strong><a href="{% url "control:event.subevent" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}?returnto={{ request.GET.urlencode|urlencode }}">
{{ s.name }}</a></strong><br>
<small class="text-muted">
#{{ s.pk }}
</small>
</td>
<td>
{{ s.get_date_from_display }}<br>
<span class="text-muted">
{{ s.date_from|date:"l" }}
</span>
</td>
<td>
{% for q in s.first_quotas|slice:":3" %}
{% include "pretixcontrol/fragment_quota_box_paid.html" with quota=q %}
{% endfor %}
{% if s.first_quotas|length > 3 %}
<a href="{% url "control:event.items.quotas" organizer=request.event.organizer.slug event=request.event.slug %}?subevent={{ s.id }}"
class="quotabox-more" data-toggle="tooltip" title="{% trans "More quotas" %}"
data-placement="top">
&middot;&middot;&middot;
</a>
{% endif %}
</td>
<tr>
<td>
<strong><a href="{% url "control:event.subevent" organizer=request.event.organizer.slug event=request.event.slug subevent=s.id %}?returnto={{ request.GET.urlencode|urlencode }}">
{{ s.name }}</a></strong><br>
<small class="text-muted">
#{{ s.pk }}
</small>
</td>
<td>
{{ s.get_date_from_display }}<br>
<span class="text-muted">
{{ s.date_from|date:"l" }}
</span>
</td>
<td>
{% for q in s.first_quotas|slice:":3" %}
{% include "pretixcontrol/fragment_quota_box_paid.html" with quota=q %}
{% endfor %}
{% if s.first_quotas|length > 3 %}
<a href="{% url "control:event.items.quotas" organizer=request.event.organizer.slug event=request.event.slug %}?subevent={{ s.id }}"
class="quotabox-more" data-toggle="tooltip" title="{% trans "More quotas" %}"
data-placement="top">
&middot;&middot;&middot;
</a>
{% endif %}
</td>
</tr>
{% endfor %}
{% endif %}
</tbody>
</table>
</div>
+11 -1
View File
@@ -3,7 +3,8 @@ import datetime
from decimal import Decimal
import dateutil
from django.db.models import DateTimeField, Max, OuterRef, Q, Subquery, Sum
from django.db.models import DateTimeField, Max, OuterRef, Q, Subquery, Sum, Prefetch, F
from django.db.models.functions import Coalesce
from django.urls import reverse
from django.utils import formats, timezone
from django.utils.timezone import now
@@ -93,6 +94,15 @@ class IndexView(EventPermissionRequiredMixin, ChartContainingView, TemplateView)
cl.auto_checkin_sales_channels = [sales_channels[channel] for channel in cl.auto_checkin_sales_channels]
ctx['checkinlists'] = qs
qs = self.request.event.subevents
if list:
qs = qs.prefetch_related(
Prefetch('quotas',
queryset=self.request.event.quotas.annotate(s=Coalesce(F('size'), 0)).order_by('-s'),
to_attr='first_quotas')
)
ctx['subevents'] = qs
tickc = opqs.filter(
order__event=self.request.event, item__admission=True,
order__status__in=(Order.STATUS_PAID, Order.STATUS_PENDING),
@@ -121,6 +121,11 @@
}
}
.table-quotas {
max-height: 250px;
overflow: auto;
}
.widget-container.widget-container-event {
padding: 0;
cursor: pointer;