Fix #233 -- Make orderlist and overview filterable by payment_provider (#234)

* Make orderlist and overview filterable by payment_provider (fixing #233)

* Remove checks for allowed and enabled payment_providers as discussed
This commit is contained in:
Martin Gross
2016-09-14 13:01:22 +02:00
committed by Raphael Michel
parent a43b41c8d6
commit 8fb363f815
8 changed files with 179 additions and 144 deletions

View File

@@ -54,6 +54,15 @@
</option>
{% endfor %}
</select>
<select name="provider" class="form-control">
<option value="">{% trans "All payment providers" %}</option>
{% for p in providers %}
<option value="{{ p.name }}"
{% if request.GET.provider|add:"0" == p.name %}selected="selected"{% endif %}>
{{ p.verbose_name }}
</option>
{% endfor %}
</select>
<input type="text" name="user" class="form-control" placeholder="{% trans "Search user" %}" value="{{ request.GET.user }}">
<button class="btn btn-primary" type="submit">{% trans "Filter" %}</button>
</form>

View File

@@ -40,27 +40,27 @@
<tr class="item {% if tup.0 %}categorized{% endif %}">
<td>{{ item.name }}</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}">
<a href="{{ listurl }}?item={{ item.id }}&amp;provider={{ item.provider }}">
{{ item.num_total|togglesum }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=ne">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=ne&amp;provider={{ item.provider }}">
{{ item.num_pending|togglesum }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=c">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=c&amp;provider={{ item.provider }}">
{{ item.num_cancelled|togglesum }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=r">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=r&amp;provider={{ item.provider }}">
{{ item.num_refunded|togglesum }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.id }}&amp;status=p">
<a href="{{ listurl }}?item={{ item.id }}&amp;status=p&amp;provider={{ item.provider }}">
{{ item.num_paid|togglesum }}
</a>
</td>

View File

@@ -66,12 +66,27 @@ class OrderList(EventPermissionRequiredMixin, ListView):
if self.request.GET.get("item", "") != "":
i = self.request.GET.get("item", "")
qs = qs.filter(positions__item_id__in=(i,))
if self.request.GET.get("provider", "") != "":
p = self.request.GET.get("provider", "")
qs = qs.filter(payment_provider=p)
return qs.distinct()
def get_payment_providers(self):
providers = []
responses = register_payment_providers.send(self.request.event)
for receiver, response in responses:
provider = response(self.request.event)
providers.append({
'name': provider,
'verbose_name': provider.verbose_name
})
return providers
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['items'] = Item.objects.filter(event=self.request.event)
ctx['filtered'] = ("status" in self.request.GET or "item" in self.request.GET or "user" in self.request.GET)
ctx['filtered'] = ("status" in self.request.GET or "item" in self.request.GET or "user" in self.request.GET or "provider" in self.request.GET)
ctx['providers'] = self.get_payment_providers()
return ctx