mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Subevent list: Add meta-data filter (Z#23114466) (#3083)
Co-authored-by: Raphael Michel <michel@rami.io>
This commit is contained in:
committed by
GitHub
parent
6f61155deb
commit
513a90f976
@@ -110,7 +110,7 @@ class SubEventQueryMixin:
|
||||
|
||||
@cached_property
|
||||
def filter_form(self):
|
||||
return SubEventFilterForm(data=self.request_data, prefix='filter')
|
||||
return SubEventFilterForm(data=self.request_data, prefix='filter', event=self.request.event)
|
||||
|
||||
|
||||
class SubEventList(EventPermissionRequiredMixin, PaginationMixin, SubEventQueryMixin, ListView):
|
||||
@@ -125,6 +125,9 @@ class SubEventList(EventPermissionRequiredMixin, PaginationMixin, SubEventQueryM
|
||||
def get_context_data(self, **kwargs):
|
||||
ctx = super().get_context_data(**kwargs)
|
||||
ctx['filter_form'] = self.filter_form
|
||||
ctx['meta_fields'] = [
|
||||
self.filter_form['meta_{}'.format(p.name)] for p in self.request.organizer.meta_properties.filter(filter_allowed=True)
|
||||
]
|
||||
|
||||
quotas = []
|
||||
for s in ctx['subevents']:
|
||||
|
||||
@@ -48,7 +48,8 @@ from django.utils.translation import gettext as _, pgettext
|
||||
|
||||
from pretix.base.models import (
|
||||
EventMetaProperty, EventMetaValue, ItemMetaProperty, ItemMetaValue,
|
||||
ItemVariation, ItemVariationMetaValue, Order, Organizer, User, Voucher,
|
||||
ItemVariation, ItemVariationMetaValue, Order, Organizer, SubEventMetaValue,
|
||||
User, Voucher,
|
||||
)
|
||||
from pretix.control.forms.event import EventWizardCopyForm
|
||||
from pretix.control.permissions import (
|
||||
@@ -743,6 +744,38 @@ def meta_values(request):
|
||||
})
|
||||
|
||||
|
||||
def subevent_meta_values(request, organizer, event):
|
||||
q = request.GET.get('q')
|
||||
propname = request.GET.get('property')
|
||||
|
||||
matches = SubEventMetaValue.objects.filter(
|
||||
value__icontains=q,
|
||||
property__name=propname,
|
||||
subevent__event_id=request.event.pk,
|
||||
)
|
||||
event_matches = EventMetaValue.objects.filter(
|
||||
value__icontains=q,
|
||||
property__name=propname,
|
||||
event_id=request.event.pk,
|
||||
)
|
||||
defaults = EventMetaProperty.objects.filter(
|
||||
default__icontains=q,
|
||||
name=propname,
|
||||
organizer_id=request.organizer.pk,
|
||||
)
|
||||
|
||||
return JsonResponse({
|
||||
'results': [
|
||||
{'name': v, 'id': v}
|
||||
for v in sorted(
|
||||
set(defaults.values_list('default', flat=True)[:10]) |
|
||||
set(matches.values_list('value', flat=True)[:10]) |
|
||||
set(event_matches.values_list('value', flat=True)[:10])
|
||||
)
|
||||
]
|
||||
})
|
||||
|
||||
|
||||
def item_meta_values(request, organizer, event):
|
||||
q = request.GET.get('q')
|
||||
propname = request.GET.get('property')
|
||||
|
||||
Reference in New Issue
Block a user