Add new signal pretix.control.signals.order_search_filter_q

This commit is contained in:
Raphael Michel
2019-11-28 11:18:09 +01:00
parent bb3348022f
commit d4a491fc1b
3 changed files with 20 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ from pretix.base.models import (
)
from pretix.base.signals import register_payment_providers
from pretix.control.forms.widgets import Select2
from pretix.control.signals import order_search_filter_q
from pretix.helpers.database import FixedOrderBy, rolledback_transaction
from pretix.helpers.i18n import i18ncomp
@@ -139,7 +140,7 @@ class OrderFilterForm(FilterForm):
)
).values('id')
qs = qs.annotate(has_pos=Exists(matching_positions)).filter(
mainq = (
code
| Q(email__icontains=u)
| Q(invoice_address__name_cached__icontains=u)
@@ -148,6 +149,11 @@ class OrderFilterForm(FilterForm):
| Q(comment__icontains=u)
| Q(has_pos=True)
)
for recv, q in order_search_filter_q.send(sender=getattr(self, 'event', None), query=u):
mainq = mainq | q
qs = qs.annotate(has_pos=Exists(matching_positions)).filter(
mainq
)
if fdata.get('status'):
s = fdata.get('status')

View File

@@ -301,3 +301,14 @@ oauth_application_registered = Signal(
"""
This signal will be called whenever a user registers a new OAuth application.
"""
order_search_filter_q = Signal(
providing_args=["query"]
)
"""
This signal will be called whenever a free-text order search is performed. You are expected to return one
Q object that will be OR-ed with existing search queries. As order search exists on a global level as well,
this is not an Event signal and will be called even if your plugin is not active. ``sender`` will contain the
event if the search is performed within an event, and ``None`` otherwise. The search query will be passed as
``query``.
"""