Added filtering by item to the product list

This commit is contained in:
Raphael Michel
2015-07-19 20:32:15 +02:00
parent 42b3f9ff51
commit cb9ae9cc81
3 changed files with 44 additions and 6 deletions
@@ -22,6 +22,15 @@
<option value="c" {% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Cancelled" %}</option> <option value="c" {% if request.GET.status == "c" %}selected="selected"{% endif %}>{% trans "Cancelled" %}</option>
<option value="r" {% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Refunded" %}</option> <option value="r" {% if request.GET.status == "r" %}selected="selected"{% endif %}>{% trans "Refunded" %}</option>
</select> </select>
<select name="item" class="form-control">
<option value="">{% trans "All products" %}</option>
{% for item in items %}
<option value="{{ item.identity }}"
{% if request.GET.item == item.identity %}selected="selected"{% endif %}>
{{ item.name }}
</option>
{% endfor %}
</select>
<input type="text" name="user" class="form-control" placeholder="{% trans "Search user" %}" value="{{ request.GET.user }}"> <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> <button class="btn btn-primary" type="submit">{% trans "Filter" %}</button>
</form> </form>
@@ -3,6 +3,7 @@
{% load order_overview %} {% load order_overview %}
{% block title %}{% trans "Order overview" %}{% endblock %} {% block title %}{% trans "Order overview" %}{% endblock %}
{% block content %} {% block content %}
{% url "control:event.orders" organizer=request.event.organizer.slug event=request.event.slug as listurl %}
<div class="pull-right"> <div class="pull-right">
<div class="btn-group" role="group" id="sumtoggle"> <div class="btn-group" role="group" id="sumtoggle">
<button type="button" data-target=".count" class="btn btn-default active">Show number</button> <button type="button" data-target=".count" class="btn btn-default active">Show number</button>
@@ -37,11 +38,31 @@
{% for item in tup.1 %} {% for item in tup.1 %}
<tr class="item {% if tup.0 %}categorized{% endif %}"> <tr class="item {% if tup.0 %}categorized{% endif %}">
<td>{{ item.name }}</td> <td>{{ item.name }}</td>
<td>{{ item.num_total|togglesum }}</td> <td>
<td>{{ item.num_pending|togglesum }}</td> <a href="{{ listurl }}?item={{ item.identity }}">
<td>{{ item.num_cancelled|togglesum }}</td> {{ item.num_total|togglesum }}
<td>{{ item.num_refunded|togglesum }}</td> </a>
<td>{{ item.num_paid|togglesum }}</td> </td>
<td>
<a href="{{ listurl }}?item={{ item.identity }}&status=n">
{{ item.num_pending|togglesum }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.identity }}&status=c">
{{ item.num_cancelled|togglesum }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.identity }}&status=r">
{{ item.num_refunded|togglesum }}
</a>
</td>
<td>
<a href="{{ listurl }}?item={{ item.identity }}&status=p">
{{ item.num_paid|togglesum }}
</a>
</td>
</tr> </tr>
{% if item.has_variations %} {% if item.has_variations %}
{% for var in item.all_variations %} {% for var in item.all_variations %}
+9 -1
View File
@@ -8,7 +8,7 @@ from django.http import HttpResponse
from django.shortcuts import redirect, render from django.shortcuts import redirect, render
from django.utils.functional import cached_property from django.utils.functional import cached_property
from django.views.generic import ListView, DetailView, TemplateView, View from django.views.generic import ListView, DetailView, TemplateView, View
from pretix.base.models import Order, Quota, OrderPosition, ItemCategory from pretix.base.models import Order, Quota, OrderPosition, ItemCategory, Item
from pretix.base.services.orders import mark_order_paid from pretix.base.services.orders import mark_order_paid
from pretix.base.signals import register_payment_providers from pretix.base.signals import register_payment_providers
from pretix.control.forms.orders import ExtendForm from pretix.control.forms.orders import ExtendForm
@@ -35,8 +35,16 @@ class OrderList(EventPermissionRequiredMixin, ListView):
if self.request.GET.get("status", "") != "": if self.request.GET.get("status", "") != "":
s = self.request.GET.get("status", "") s = self.request.GET.get("status", "")
qs = qs.filter(status=s) qs = qs.filter(status=s)
if self.request.GET.get("item", "") != "":
i = self.request.GET.get("item", "")
qs = qs.filter(positions__item_id__in=(i,)).distinct()
return qs.select_related("user") return qs.select_related("user")
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['items'] = Item.objects.current.filter(event=self.request.event)
return ctx
class OrderView(EventPermissionRequiredMixin, DetailView): class OrderView(EventPermissionRequiredMixin, DetailView):
context_object_name = 'order' context_object_name = 'order'