Customers: Additional filter form fields

This commit is contained in:
Raphael Michel
2021-06-22 16:30:26 +02:00
parent 130ffddf48
commit a88fed283a
3 changed files with 57 additions and 22 deletions

View File

@@ -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('status') == 'active':
qs = qs.filter(is_active=True, is_verified=True)
elif fdata.get('status') == 'disabled':
qs = qs.filter(is_active=False)
elif fdata.get('status') == 'unverified':
qs = qs.filter(is_verified=False)
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'): if fdata.get('ordering'):
qs = qs.order_by(self.get_order_by()) qs = qs.order_by(self.get_order_by())
else: else:
qs = qs.order_by('-email') qs = qs.order_by('-email')
return qs return qs.distinct()
class TeamFilterForm(FilterForm): class TeamFilterForm(FilterForm):

View File

@@ -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 %}

View File

@@ -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">