Allow to reactivate canceled orders (#1601)

This commit is contained in:
Raphael Michel
2020-03-11 11:40:56 +01:00
committed by GitHub
parent 2431a8b767
commit 1ee48a10b5
17 changed files with 411 additions and 11 deletions

View File

@@ -57,7 +57,7 @@ from pretix.base.services.mail import SendMailException, render_mail
from pretix.base.services.orders import (
OrderChangeManager, OrderError, approve_order, cancel_order, deny_order,
extend_order, mark_order_expired, mark_order_refunded,
notify_user_changed_order,
notify_user_changed_order, reactivate_order,
)
from pretix.base.services.stats import order_overview
from pretix.base.services.tickets import generate
@@ -1261,6 +1261,42 @@ class OrderExtend(OrderView):
data=self.request.POST if self.request.method == "POST" else None)
class OrderReactivate(OrderView):
permission = 'can_change_orders'
def post(self, *args, **kwargs):
try:
reactivate_order(
self.order,
user=self.request.user
)
messages.success(self.request, _('The order has been reactivated.'))
except OrderError as e:
messages.error(self.request, str(e))
return self._redirect_here()
except LockTimeoutException:
messages.error(self.request, _('We were not able to process the request completely as the '
'server was too busy.'))
return self._redirect_back()
def dispatch(self, request, *args, **kwargs):
if self.order.status != Order.STATUS_CANCELED:
messages.error(self.request, _('This action is only allowed for canceled orders.'))
return self._redirect_back()
return super().dispatch(request, *kwargs, **kwargs)
def _redirect_here(self):
return redirect('control:event.order.reactivate',
event=self.request.event.slug,
organizer=self.request.event.organizer.slug,
code=self.order.code)
def get(self, *args, **kwargs):
return render(self.request, 'pretixcontrol/order/reactivate.html', {
'order': self.order,
})
class OrderChange(OrderView):
permission = 'can_change_orders'
template_name = 'pretixcontrol/order/change.html'