Disallow cancelling an expired order

as per discussion on #165
This commit is contained in:
Tobias Kunze
2016-08-21 16:07:31 +02:00
parent 5667866c9d
commit 87a77989e7
4 changed files with 26 additions and 4 deletions

View File

@@ -8,7 +8,7 @@ from django.utils.translation import ugettext_lazy as _
from .base import LoggedModel
from .event import Event
from .items import Item, ItemVariation, Quota
from .orders import CartPosition, OrderPosition
from .orders import CartPosition, Order, OrderPosition
def generate_code():

View File

@@ -142,7 +142,7 @@ def cancel_order(order, user=None):
if isinstance(user, int):
user = User.objects.get(pk=user)
with order.event.lock():
if order.status not in (Order.STATUS_PENDING, Order.STATUS_EXPIRED):
if order.status != Order.STATUS_PENDING:
raise OrderError(_('You cannot cancel this order.'))
order.status = Order.STATUS_CANCELLED
order.save()

View File

@@ -295,7 +295,7 @@ class OrderCancel(EventViewMixin, OrderDetailMixin, TemplateView):
self.kwargs = kwargs
if not self.order:
raise Http404(_('Unknown order code or not authorized to access this order.'))
if self.order.status not in (Order.STATUS_PENDING, Order.STATUS_EXPIRED) or not self.order.can_user_cancel:
if self.order.status != Order.STATUS_PENDING or not self.order.can_user_cancel:
messages.error(request, _('You cannot cancel this order.'))
return redirect(self.get_order_url())
return super().dispatch(request, *args, **kwargs)