mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Customers: Additional filter form fields
This commit is contained in:
@@ -1049,6 +1049,26 @@ class CustomerFilterForm(FilterForm):
|
|||||||
}),
|
}),
|
||||||
required=False
|
required=False
|
||||||
)
|
)
|
||||||
|
status = forms.ChoiceField(
|
||||||
|
label=_('Status'),
|
||||||
|
required=False,
|
||||||
|
choices=(
|
||||||
|
('', _('All')),
|
||||||
|
('active', _('active')),
|
||||||
|
('disabled', _('disabled')),
|
||||||
|
('unverified', _('not yet activated')),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
memberships = forms.ChoiceField(
|
||||||
|
label=_('Memberships'),
|
||||||
|
required=False,
|
||||||
|
choices=(
|
||||||
|
('', _('All')),
|
||||||
|
('no', _('Has no memberships')),
|
||||||
|
('any', _('Has any membership')),
|
||||||
|
('valid', _('Has valid membership')),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
kwargs.pop('request')
|
kwargs.pop('request')
|
||||||
@@ -1065,12 +1085,26 @@ class CustomerFilterForm(FilterForm):
|
|||||||
| Q(identifier__istartswith=query)
|
| Q(identifier__istartswith=query)
|
||||||
)
|
)
|
||||||
|
|
||||||
if fdata.get('ordering'):
|
if fdata.get('status') == 'active':
|
||||||
qs = qs.order_by(self.get_order_by())
|
qs = qs.filter(is_active=True, is_verified=True)
|
||||||
else:
|
elif fdata.get('status') == 'disabled':
|
||||||
qs = qs.order_by('-email')
|
qs = qs.filter(is_active=False)
|
||||||
|
elif fdata.get('status') == 'unverified':
|
||||||
|
qs = qs.filter(is_verified=False)
|
||||||
|
|
||||||
return qs
|
if fdata.get('memberships') == 'no':
|
||||||
|
qs = qs.filter(memberships__isnull=True)
|
||||||
|
elif fdata.get('memberships') == 'any':
|
||||||
|
qs = qs.filter(memberships__isnull=False)
|
||||||
|
elif fdata.get('memberships') == 'valid':
|
||||||
|
qs = qs.filter(memberships__date_start__lt=now(), memberships__date_end__gt=now(), memberships__canceled=False)
|
||||||
|
|
||||||
|
if fdata.get('ordering'):
|
||||||
|
qs = qs.order_by(self.get_order_by())
|
||||||
|
else:
|
||||||
|
qs = qs.order_by('-email')
|
||||||
|
|
||||||
|
return qs.distinct()
|
||||||
|
|
||||||
|
|
||||||
class TeamFilterForm(FilterForm):
|
class TeamFilterForm(FilterForm):
|
||||||
|
|||||||
@@ -91,7 +91,8 @@
|
|||||||
{% for m in memberships %}
|
{% for m in memberships %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{% if m.canceled %}<del>{% endif %}
|
{% if m.canceled %}
|
||||||
|
<del>{% endif %}
|
||||||
{{ m.membership_type.name }}
|
{{ m.membership_type.name }}
|
||||||
{% if m.canceled %}</del>{% endif %}
|
{% if m.canceled %}</del>{% endif %}
|
||||||
{% if m.testmode %}<span class="label label-warning">{% trans "TEST MODE" %}</span>{% endif %}
|
{% if m.testmode %}<span class="label label-warning">{% trans "TEST MODE" %}</span>{% endif %}
|
||||||
@@ -143,17 +144,17 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7">
|
<td colspan="7">
|
||||||
<a href="{% url "control:organizer.customer.membership.add" organizer=request.organizer.slug customer=customer.identifier %}"
|
<a href="{% url "control:organizer.customer.membership.add" organizer=request.organizer.slug customer=customer.identifier %}"
|
||||||
class="btn btn-default">
|
class="btn btn-default">
|
||||||
<i class="fa fa-plus"></i>
|
<i class="fa fa-plus"></i>
|
||||||
{% trans "Add membership" %}
|
{% trans "Add membership" %}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel panel-default items">
|
<div class="panel panel-default items">
|
||||||
@@ -191,7 +192,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="fa fa-{{ o.sales_channel_obj.icon }} text-muted"
|
<span class="fa fa-{{ o.sales_channel_obj.icon }} text-muted"
|
||||||
data-toggle="tooltip" title="{% trans o.sales_channel_obj.verbose_name %}"></span>
|
data-toggle="tooltip" title="{% trans o.sales_channel_obj.verbose_name %}"></span>
|
||||||
{{ o.datetime|date:"SHORT_DATETIME_FORMAT" }}
|
{{ o.datetime|date:"SHORT_DATETIME_FORMAT" }}
|
||||||
{% if o.customer_id != customer.pk %}
|
{% if o.customer_id != customer.pk %}
|
||||||
<span class="fa fa-link text-muted"
|
<span class="fa fa-link text-muted"
|
||||||
@@ -206,14 +207,14 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if o.has_external_refund or o.has_pending_refund %}
|
{% if o.has_external_refund or o.has_pending_refund %}
|
||||||
<span class="label label-danger">{% trans "REFUND PENDING" %}</span>
|
<span class="label label-danger">{% trans "REFUND PENDING" %}</span>
|
||||||
{% elif o.has_pending_refund %}
|
{% elif o.has_pending_refund %}
|
||||||
<span class="label label-warning">{% trans "REFUND PENDING" %}</span>
|
<span class="label label-warning">{% trans "REFUND PENDING" %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if o.is_overpaid %}
|
{% if o.is_overpaid %}
|
||||||
<span class="label label-warning">{% trans "OVERPAID" %}</span>
|
<span class="label label-warning">{% trans "OVERPAID" %}</span>
|
||||||
{% elif o.is_underpaid %}
|
{% elif o.is_underpaid %}
|
||||||
<span class="label label-danger">{% trans "UNDERPAID" %}</span>
|
<span class="label label-danger">{% trans "UNDERPAID" %}</span>
|
||||||
{% elif o.is_pending_with_full_payment %}
|
{% elif o.is_pending_with_full_payment %}
|
||||||
<span class="label label-danger">{% trans "FULLY PAID" %}</span>
|
<span class="label label-danger">{% trans "FULLY PAID" %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if o.computed_payment_refund_sum == o.total or o.computed_payment_refund_sum == 0 %}
|
{% if o.computed_payment_refund_sum == o.total or o.computed_payment_refund_sum == 0 %}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
{% bootstrap_field filter_form.status layout='inline' %}
|
{% bootstrap_field filter_form.status layout='inline' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 col-sm-6 col-xs-12">
|
<div class="col-md-3 col-sm-6 col-xs-12">
|
||||||
{% bootstrap_field filter_form.membership layout='inline' %}
|
{% bootstrap_field filter_form.memberships layout='inline' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2 col-sm-6 col-xs-12">
|
<div class="col-md-2 col-sm-6 col-xs-12">
|
||||||
<button class="btn btn-primary btn-block" type="submit">
|
<button class="btn btn-primary btn-block" type="submit">
|
||||||
|
|||||||
Reference in New Issue
Block a user