Proof of concept

This commit is contained in:
Raphael Michel
2019-09-10 23:01:23 +02:00
parent f7f00fe735
commit ed370fa913
6 changed files with 119 additions and 22 deletions

View File

@@ -15,7 +15,7 @@ from django.utils.translation import (
from django.views.generic.base import TemplateResponseMixin
from django_scopes import scopes_disabled
from pretix.base.models import Order
from pretix.base.models import GiftCard, Order
from pretix.base.models.orders import InvoiceAddress, OrderPayment
from pretix.base.services.cart import (
get_fees, set_cart_addons, update_tax_rates,
@@ -530,6 +530,24 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
def post(self, request):
self.request = request
if request.POST.get("giftcard"):
# TODO: cross-organizer acceptance, check for valid money, …
try:
gc = GiftCard.objects.get(
issuer=request.organizer,
secret=request.POST.get("giftcard")
)
if gc.currency != request.event.currency:
messages.error(self.request, _("This gift card does not support this currency."))
return self.render()
if 'gift_cards' not in self.cart_session:
self.cart_session['gift_cards'] = []
self.cart_session['gift_cards'] = self.cart_session['gift_cards'] + [gc.pk]
return self.render()
except GiftCard.DoesNotExist:
messages.error(self.request, _("This gift card is not known."))
return self.render()
for p in self.provider_forms:
if p['provider'].identifier == request.POST.get('payment', ''):
self.cart_session['payment'] = p['provider'].identifier
@@ -709,7 +727,7 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep):
return self.do(self.request.event.id, self.payment_provider.identifier if self.payment_provider else None,
[p.id for p in self.positions], self.cart_session.get('email'),
translation.get_language(), self.invoice_address.pk, meta_info,
request.sales_channel)
request.sales_channel, self.cart_session.get('gift_cards'))
def get_success_message(self, value):
create_empty_cart_id(self.request)

View File

@@ -11,6 +11,8 @@
<form method="post">
{% csrf_token %}
<div class="panel-group" id="payment_accordion">
{# TODO: make this proper #}
<input type="text" class="form-control" placeholder="Add gift card" name="giftcard">
{% for p in providers %}
<div class="panel panel-default" data-total="{{ p.total|floatformat:2 }}">
<label class="accordion-radio">