mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Do not allow to pay gift cards with gift cards
This commit is contained in:
@@ -32,7 +32,7 @@ from pretix.base.templatetags.money import money_filter
|
|||||||
from pretix.base.templatetags.rich_text import rich_text
|
from pretix.base.templatetags.rich_text import rich_text
|
||||||
from pretix.helpers.money import DecimalTextInput
|
from pretix.helpers.money import DecimalTextInput
|
||||||
from pretix.multidomain.urlreverse import eventreverse
|
from pretix.multidomain.urlreverse import eventreverse
|
||||||
from pretix.presale.views import get_cart_total
|
from pretix.presale.views import get_cart, get_cart_total
|
||||||
from pretix.presale.views.cart import cart_session, get_or_create_cart_id
|
from pretix.presale.views.cart import cart_session, get_or_create_cart_id
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -954,6 +954,11 @@ class GiftCardPayment(BasePaymentProvider):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def checkout_prepare(self, request: HttpRequest, cart: Dict[str, Any]) -> Union[bool, str, None]:
|
def checkout_prepare(self, request: HttpRequest, cart: Dict[str, Any]) -> Union[bool, str, None]:
|
||||||
|
for p in get_cart(request):
|
||||||
|
if p.item.issue_giftcard:
|
||||||
|
messages.error(request, _("You cannot pay with gift cards when buying a gift card."))
|
||||||
|
return
|
||||||
|
|
||||||
cs = cart_session(request)
|
cs = cart_session(request)
|
||||||
try:
|
try:
|
||||||
gc = self.event.organizer.accepted_gift_cards.get(
|
gc = self.event.organizer.accepted_gift_cards.get(
|
||||||
@@ -1000,6 +1005,11 @@ class GiftCardPayment(BasePaymentProvider):
|
|||||||
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
|
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
|
||||||
|
|
||||||
def payment_prepare(self, request: HttpRequest, payment: OrderPayment) -> Union[bool, str, None]:
|
def payment_prepare(self, request: HttpRequest, payment: OrderPayment) -> Union[bool, str, None]:
|
||||||
|
for p in payment.order.positions.all():
|
||||||
|
if p.item.issue_giftcard:
|
||||||
|
messages.error(request, _("You cannot pay with gift cards when buying a gift card."))
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
gc = self.event.organizer.accepted_gift_cards.get(
|
gc = self.event.organizer.accepted_gift_cards.get(
|
||||||
secret=request.POST.get("giftcard")
|
secret=request.POST.get("giftcard")
|
||||||
@@ -1034,6 +1044,10 @@ class GiftCardPayment(BasePaymentProvider):
|
|||||||
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
|
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
|
||||||
|
|
||||||
def execute_payment(self, request: HttpRequest, payment: OrderPayment) -> str:
|
def execute_payment(self, request: HttpRequest, payment: OrderPayment) -> str:
|
||||||
|
for p in payment.order.positions.all():
|
||||||
|
if p.item.issue_giftcard:
|
||||||
|
raise PaymentException(_("You cannot pay with gift cards when buying a gift card."))
|
||||||
|
|
||||||
gcpk = payment.info_data.get('gift_card')
|
gcpk = payment.info_data.get('gift_card')
|
||||||
if not gcpk or not payment.info_data.get('retry'):
|
if not gcpk or not payment.info_data.get('retry'):
|
||||||
raise PaymentException("Invalid state, should never occur.")
|
raise PaymentException("Invalid state, should never occur.")
|
||||||
|
|||||||
@@ -607,6 +607,8 @@ def _create_order(event: Event, email: str, positions: List[CartPosition], now_d
|
|||||||
if not gc.accepted_by(event.organizer):
|
if not gc.accepted_by(event.organizer):
|
||||||
raise OrderError(_("This gift card is not accepted by this event organizer."))
|
raise OrderError(_("This gift card is not accepted by this event organizer."))
|
||||||
checked_gift_cards.append(gc)
|
checked_gift_cards.append(gc)
|
||||||
|
if checked_gift_cards and any(c.item.issue_giftcard for c in positions):
|
||||||
|
raise OrderError(_("You cannot pay with gift cards when buying a gift card."))
|
||||||
|
|
||||||
fees, pf, gift_card_values = _get_fees(positions, payment_provider, address, meta_info, event, checked_gift_cards)
|
fees, pf, gift_card_values = _get_fees(positions, payment_provider, address, meta_info, event, checked_gift_cards)
|
||||||
total = pending_sum = sum([c.price for c in positions]) + sum([c.value for c in fees])
|
total = pending_sum = sum([c.price for c in positions]) + sum([c.value for c in fees])
|
||||||
|
|||||||
Reference in New Issue
Block a user