mirror of
https://github.com/pretix/pretix.git
synced 2026-08-28 13:34:40 +00:00
Gift cards: Allow to sort by most recent transaction
This commit is contained in:
@@ -1304,6 +1304,8 @@ class GiftCardFilterForm(FilterForm):
|
|||||||
'issuance': 'issuance',
|
'issuance': 'issuance',
|
||||||
'expires': F('expires').asc(nulls_last=True),
|
'expires': F('expires').asc(nulls_last=True),
|
||||||
'-expires': F('expires').desc(nulls_first=True),
|
'-expires': F('expires').desc(nulls_first=True),
|
||||||
|
'last_tx': F('last_tx').asc(nulls_first=True),
|
||||||
|
'-last_tx': F('last_tx').desc(nulls_last=True),
|
||||||
'secret': 'secret',
|
'secret': 'secret',
|
||||||
'value': 'cached_value',
|
'value': 'cached_value',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,9 @@
|
|||||||
<th>{% trans "Expiry date" %}
|
<th>{% trans "Expiry date" %}
|
||||||
<a href="?{% url_replace request 'ordering' '-expires' %}"><i class="fa fa-caret-down"></i></a>
|
<a href="?{% url_replace request 'ordering' '-expires' %}"><i class="fa fa-caret-down"></i></a>
|
||||||
<a href="?{% url_replace request 'ordering' 'expires' %}"><i class="fa fa-caret-up"></i></a></th>
|
<a href="?{% url_replace request 'ordering' 'expires' %}"><i class="fa fa-caret-up"></i></a></th>
|
||||||
|
<th>{% trans "Last transaction" %}
|
||||||
|
<a href="?{% url_replace request 'ordering' '-last_tx' %}"><i class="fa fa-caret-down"></i></a>
|
||||||
|
<a href="?{% url_replace request 'ordering' 'last_tx' %}"><i class="fa fa-caret-up"></i></a></th>
|
||||||
<th class="text-right">{% trans "Current value" %}
|
<th class="text-right">{% trans "Current value" %}
|
||||||
<a href="?{% url_replace request 'ordering' '-value' %}"><i class="fa fa-caret-down"></i></a>
|
<a href="?{% url_replace request 'ordering' '-value' %}"><i class="fa fa-caret-down"></i></a>
|
||||||
<a href="?{% url_replace request 'ordering' 'value' %}"><i class="fa fa-caret-up"></i></a></th>
|
<a href="?{% url_replace request 'ordering' 'value' %}"><i class="fa fa-caret-up"></i></a></th>
|
||||||
@@ -83,6 +86,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>{{ g.issuance|date:"SHORT_DATETIME_FORMAT" }}</td>
|
<td>{{ g.issuance|date:"SHORT_DATETIME_FORMAT" }}</td>
|
||||||
<td>{% if g.expires %}{{ g.expires|date:"SHORT_DATETIME_FORMAT" }}{% endif %}</td>
|
<td>{% if g.expires %}{{ g.expires|date:"SHORT_DATETIME_FORMAT" }}{% endif %}</td>
|
||||||
|
<td>{% if g.last_tx %}{{ g.last_tx|date:"SHORT_DATETIME_FORMAT" }}{% endif %}</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
{{ g.cached_value|money:g.currency }}
|
{{ g.cached_value|money:g.currency }}
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -1435,8 +1435,12 @@ class GiftCardListView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixi
|
|||||||
s = GiftCardTransaction.objects.filter(
|
s = GiftCardTransaction.objects.filter(
|
||||||
card=OuterRef('pk')
|
card=OuterRef('pk')
|
||||||
).order_by().values('card').annotate(s=Sum('value')).values('s')
|
).order_by().values('card').annotate(s=Sum('value')).values('s')
|
||||||
|
s_last_tx = GiftCardTransaction.objects.filter(
|
||||||
|
card=OuterRef('pk')
|
||||||
|
).order_by().values('card').annotate(m=Max('datetime')).values('m')
|
||||||
qs = self.request.organizer.issued_gift_cards.annotate(
|
qs = self.request.organizer.issued_gift_cards.annotate(
|
||||||
cached_value=Coalesce(Subquery(s), Decimal('0.00'))
|
cached_value=Coalesce(Subquery(s), Decimal('0.00')),
|
||||||
|
last_tx=Subquery(s_last_tx),
|
||||||
).order_by('-issuance')
|
).order_by('-issuance')
|
||||||
if self.filter_form.is_valid():
|
if self.filter_form.is_valid():
|
||||||
qs = self.filter_form.filter_qs(qs)
|
qs = self.filter_form.filter_qs(qs)
|
||||||
|
|||||||
Reference in New Issue
Block a user