forked from CGM_Public/pretix_original
Allow to filter order list by variations
This commit is contained in:
@@ -177,11 +177,9 @@ class EventOrderFilterForm(OrderFilterForm):
|
|||||||
orders = {'code': 'code', 'email': 'email', 'total': 'total',
|
orders = {'code': 'code', 'email': 'email', 'total': 'total',
|
||||||
'datetime': 'datetime', 'status': 'status'}
|
'datetime': 'datetime', 'status': 'status'}
|
||||||
|
|
||||||
item = forms.ModelChoiceField(
|
item = forms.ChoiceField(
|
||||||
label=_('Products'),
|
label=_('Products'),
|
||||||
queryset=Item.objects.none(),
|
|
||||||
required=False,
|
required=False,
|
||||||
empty_label=_('All products')
|
|
||||||
)
|
)
|
||||||
subevent = forms.ModelChoiceField(
|
subevent = forms.ModelChoiceField(
|
||||||
label=pgettext_lazy('subevent', 'Date'),
|
label=pgettext_lazy('subevent', 'Date'),
|
||||||
@@ -241,12 +239,28 @@ class EventOrderFilterForm(OrderFilterForm):
|
|||||||
elif 'subevent':
|
elif 'subevent':
|
||||||
del self.fields['subevent']
|
del self.fields['subevent']
|
||||||
|
|
||||||
|
choices = [('', _('All products'))]
|
||||||
|
for i in self.event.items.prefetch_related('variations').all():
|
||||||
|
variations = list(i.variations.all())
|
||||||
|
if variations:
|
||||||
|
choices.append((str(i.pk), _('{product} – Any variation').format(product=i.name)))
|
||||||
|
for v in variations:
|
||||||
|
choices.append(('%d-%d' % (i.pk, v.pk), '%s – %s' % (i.name, v.value)))
|
||||||
|
else:
|
||||||
|
choices.append((str(i.pk), i.name))
|
||||||
|
self.fields['item'].choices = choices
|
||||||
|
|
||||||
def filter_qs(self, qs):
|
def filter_qs(self, qs):
|
||||||
fdata = self.cleaned_data
|
fdata = self.cleaned_data
|
||||||
qs = super().filter_qs(qs)
|
qs = super().filter_qs(qs)
|
||||||
|
|
||||||
if fdata.get('item'):
|
item = fdata.get('item')
|
||||||
qs = qs.filter(all_positions__item=fdata.get('item'), all_positions__canceled=False).distinct()
|
if item:
|
||||||
|
if '-' in item:
|
||||||
|
var = item.split('-')[1]
|
||||||
|
qs = qs.filter(all_positions__variation_id=var, all_positions__canceled=False).distinct()
|
||||||
|
else:
|
||||||
|
qs = qs.filter(all_positions__item_id=fdata.get('item'), all_positions__canceled=False).distinct()
|
||||||
|
|
||||||
if fdata.get('subevent'):
|
if fdata.get('subevent'):
|
||||||
qs = qs.filter(all_positions__subevent=fdata.get('subevent'), all_positions__canceled=False).distinct()
|
qs = qs.filter(all_positions__subevent=fdata.get('subevent'), all_positions__canceled=False).distinct()
|
||||||
|
|||||||
@@ -86,11 +86,29 @@
|
|||||||
{% for var in item.all_variations %}
|
{% for var in item.all_variations %}
|
||||||
<tr class="variation {% if tup.0 %}categorized{% endif %}">
|
<tr class="variation {% if tup.0 %}categorized{% endif %}">
|
||||||
<td>{{ var }}</td>
|
<td>{{ var }}</td>
|
||||||
<td>{{ var.num.canceled|togglesum:request.event.currency }}</td>
|
<td>
|
||||||
<td>{{ var.num.expired|togglesum:request.event.currency }}</td>
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=c&provider={{ item.provider }}">
|
||||||
<td>{{ var.num.pending|togglesum:request.event.currency }}</td>
|
{{ var.num.canceled|togglesum:request.event.currency }}
|
||||||
<td>{{ var.num.paid|togglesum:request.event.currency }}</td>
|
</a>
|
||||||
<td>{{ var.num.total|togglesum:request.event.currency }}</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=e&provider={{ item.provider }}">
|
||||||
|
{{ var.num.expired|togglesum:request.event.currency }}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=n&provider={{ item.provider }}">
|
||||||
|
{{ var.num.pending|togglesum:request.event.currency }}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ listurl }}?item={{ item.id }}-{{ var.id }}&status=p&provider={{ item.provider }}">
|
||||||
|
{{ var.num.paid|togglesum:request.event.currency }}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ var.num.total|togglesum:request.event.currency }}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
Reference in New Issue
Block a user