forked from CGM_Public/pretix_original
Order search: Proper input validation with error feedback for advanced search (#4920)
This commit is contained in:
@@ -7,7 +7,8 @@
|
|||||||
{% block title %}{% trans "Order search" %}{% endblock %}
|
{% block title %}{% trans "Order search" %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{% trans "Order search" %}</h1>
|
<h1>{% trans "Order search" %}</h1>
|
||||||
<form class="form-horizontal" action="{% url "control:event.orders" event=request.event.slug organizer=request.event.organizer.slug %}" method="get">
|
<form class="form-horizontal" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
{% for f in forms %}
|
{% for f in forms %}
|
||||||
{% bootstrap_form_errors f layout='control' %}
|
{% bootstrap_form_errors f layout='control' %}
|
||||||
{% for field in f %}
|
{% for field in f %}
|
||||||
|
|||||||
@@ -172,6 +172,26 @@ class OrderSearch(OrderSearchMixin, EventPermissionRequiredMixin, TemplateView):
|
|||||||
ctx['forms'] = self.get_forms()
|
ctx['forms'] = self.get_forms()
|
||||||
return ctx
|
return ctx
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
all_valid = True
|
||||||
|
for f in self.get_forms():
|
||||||
|
if not f.is_valid():
|
||||||
|
all_valid = False
|
||||||
|
|
||||||
|
if all_valid:
|
||||||
|
data = request.POST.copy()
|
||||||
|
data.pop('csrfmiddlewaretoken', None)
|
||||||
|
return redirect(reverse(
|
||||||
|
"control:event.orders",
|
||||||
|
kwargs={
|
||||||
|
"event": request.event.slug,
|
||||||
|
"organizer": request.event.organizer.slug,
|
||||||
|
}
|
||||||
|
) + '?' + data.urlencode())
|
||||||
|
else:
|
||||||
|
messages.error(request, _("We could not process your input. See below for details."))
|
||||||
|
return self.get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class BaseOrderBulkActionView(OrderSearchMixin, EventPermissionRequiredMixin, AsyncFormView):
|
class BaseOrderBulkActionView(OrderSearchMixin, EventPermissionRequiredMixin, AsyncFormView):
|
||||||
template_name = 'pretixcontrol/orders/bulk_action.html'
|
template_name = 'pretixcontrol/orders/bulk_action.html'
|
||||||
|
|||||||
Reference in New Issue
Block a user