diff --git a/combo/apps/lingo/forms.py b/combo/apps/lingo/forms.py index 51d6f17d..ec2af936 100644 --- a/combo/apps/lingo/forms.py +++ b/combo/apps/lingo/forms.py @@ -152,3 +152,12 @@ class TransactionExportForm(forms.Form): today = datetime.date.today() self.initial['start_date'] = today - datetime.timedelta(days=30) self.initial['end_date'] = today + + +class TransactionSearchForm(forms.Form): + regie = forms.ModelChoiceField(queryset=Regie.objects.none(), empty_label=_('All regies'), required=False) + q = forms.CharField(required=False) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['regie'].queryset = Regie.objects.all() diff --git a/combo/apps/lingo/manager_views.py b/combo/apps/lingo/manager_views.py index 586f60ae..5381e590 100644 --- a/combo/apps/lingo/manager_views.py +++ b/combo/apps/lingo/manager_views.py @@ -30,7 +30,7 @@ from django.utils.timezone import make_aware, now from django.utils.translation import ugettext_lazy as _ from django.views.generic import CreateView, DeleteView, ListView, UpdateView, View -from .forms import PaymentBackendForm, RegieForm, TransactionExportForm +from .forms import PaymentBackendForm, RegieForm, TransactionExportForm, TransactionSearchForm from .models import BasketItem, PaymentBackend, Regie, Transaction @@ -97,16 +97,23 @@ class TransactionListView(ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['query'] = self.request.GET.get('q') or '' + context['form'] = self.form return context def get_queryset(self): + self.form = TransactionSearchForm(data=self.request.GET) qs = ( Transaction.objects.select_related('user') .prefetch_related(Prefetch('items', to_attr='prefetched_items')) .filter(status__in=(eopayment.PAID, eopayment.ACCEPTED)) .order_by('-start_date') ) - query = self.request.GET.get('q') + query, regie = None, None + if self.form.is_valid(): + query = self.form.cleaned_data['q'] + regie = self.form.cleaned_data['regie'] + if regie: + qs = qs.filter(regie=regie) if query: try: date = date_parser.parse(query, dayfirst=True) diff --git a/combo/apps/lingo/templates/lingo/transaction_list.html b/combo/apps/lingo/templates/lingo/transaction_list.html index e4eeaa5c..f614d236 100644 --- a/combo/apps/lingo/templates/lingo/transaction_list.html +++ b/combo/apps/lingo/templates/lingo/transaction_list.html @@ -14,7 +14,8 @@ {% block content %}
@@ -55,14 +56,10 @@ {% else %}