def post(self, *args, **kwargs): to = self.request.POST.get('status', '') if self.order.status in (Order.STATUS_PENDING, Order.STATUS_EXPIRED) and to == 'p': if not self.mark_paid_form.is_valid(): return render(self.request, 'pretixcontrol/order/pay.html', { 'form': self.mark_paid_form, 'order': self.order, }) try: mark_order_paid(self.order, manual=True, user=self.request.user, count_waitinglist=False, force=self.mark_paid_form.cleaned_data.get( 'force', False)) except Quota.QuotaExceededException as e: messages.error(self.request, str(e)) except SendMailException: messages.warning( self.request, _('The order has been marked as paid, but we were unable to send a confirmation mail.' )) else: messages.success(self.request, _('The order has been marked as paid.')) elif self.order.cancel_allowed() and to == 'c': cancel_order(self.order, user=self.request.user, send_mail=self.request.POST.get("send_email") == "on") messages.success(self.request, _('The order has been canceled.')) elif self.order.status == Order.STATUS_PAID and to == 'n': self.order.status = Order.STATUS_PENDING self.order.payment_manual = True self.order.save() self.order.log_action('pretix.event.order.unpaid', user=self.request.user) messages.success(self.request, _('The order has been marked as not paid.')) elif self.order.status == Order.STATUS_PENDING and to == 'e': mark_order_expired(self.order, user=self.request.user) messages.success(self.request, _('The order has been marked as expired.')) elif self.order.status == Order.STATUS_PAID and to == 'r': if not self.payment_provider: messages.error( self.request, _('This order is not assigned to a known payment provider.' )) else: ret = self.payment_provider.order_control_refund_perform( self.request, self.order) if ret: return redirect(ret) return redirect(self.get_order_url())
def mark_expired(self, request, **kwargs): order = self.get_object() if order.status != Order.STATUS_PENDING: return Response({'detail': 'The order is not pending.'}, status=status.HTTP_400_BAD_REQUEST) mark_order_expired( order, user=request.user if request.user.is_authenticated else None, auth=request.auth, ) return self.retrieve(request, [], **kwargs)
def mark_expired(self, request, **kwargs): order = self.get_object() if order.status != Order.STATUS_PENDING: return Response( {'detail': 'The order is not pending.'}, status=status.HTTP_400_BAD_REQUEST ) mark_order_expired( order, user=request.user if request.user.is_authenticated else None, auth=request.auth, ) return self.retrieve(request, [], **kwargs)