forked from CGM_Public/pretix_original
Prevent duplicate payment confirmation mails
This commit is contained in:
@@ -85,6 +85,9 @@ def mark_order_paid(order: Order, provider: str=None, info: str=None, date: date
|
|||||||
:type mail_text: str
|
:type mail_text: str
|
||||||
:raises Quota.QuotaExceededException: if the quota is exceeded and ``force`` is ``False``
|
:raises Quota.QuotaExceededException: if the quota is exceeded and ``force`` is ``False``
|
||||||
"""
|
"""
|
||||||
|
if order.status == Order.STATUS_PAID:
|
||||||
|
return order
|
||||||
|
|
||||||
with order.event.lock() as now_dt:
|
with order.event.lock() as now_dt:
|
||||||
can_be_paid = order._can_be_paid()
|
can_be_paid = order._can_be_paid()
|
||||||
if not force and can_be_paid is not True:
|
if not force and can_be_paid is not True:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from django.contrib import messages
|
|||||||
from django.template.loader import get_template
|
from django.template.loader import get_template
|
||||||
from django.utils.translation import ugettext as __, ugettext_lazy as _
|
from django.utils.translation import ugettext as __, ugettext_lazy as _
|
||||||
|
|
||||||
from pretix.base.models import Quota, RequiredAction
|
from pretix.base.models import Order, Quota, RequiredAction
|
||||||
from pretix.base.payment import BasePaymentProvider
|
from pretix.base.payment import BasePaymentProvider
|
||||||
from pretix.base.services.mail import SendMailException
|
from pretix.base.services.mail import SendMailException
|
||||||
from pretix.base.services.orders import mark_order_paid, mark_order_refunded
|
from pretix.base.services.orders import mark_order_paid, mark_order_refunded
|
||||||
@@ -199,6 +199,10 @@ class Paypal(BasePaymentProvider):
|
|||||||
logger.error('Invalid state: %s' % str(payment))
|
logger.error('Invalid state: %s' % str(payment))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if order.status == Order.STATUS_PAID:
|
||||||
|
logger.warning('PayPal success event even though order is already marked as paid')
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
mark_order_paid(order, 'paypal', json.dumps(payment.to_dict()))
|
mark_order_paid(order, 'paypal', json.dumps(payment.to_dict()))
|
||||||
except Quota.QuotaExceededException as e:
|
except Quota.QuotaExceededException as e:
|
||||||
|
|||||||
@@ -42,8 +42,10 @@ class CartActionMixin:
|
|||||||
amount = int(value)
|
amount = int(value)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise CartError(_('Please enter numbers only.'))
|
raise CartError(_('Please enter numbers only.'))
|
||||||
if amount <= 0:
|
if amount < 0:
|
||||||
raise CartError(_('Please enter positive numbers only.'))
|
raise CartError(_('Please enter positive numbers only.'))
|
||||||
|
elif amount == 0:
|
||||||
|
return
|
||||||
|
|
||||||
price = self.request.POST.get('price_' + "_".join(parts[1:]), "")
|
price = self.request.POST.get('price_' + "_".join(parts[1:]), "")
|
||||||
if key.startswith('item_'):
|
if key.startswith('item_'):
|
||||||
|
|||||||
Reference in New Issue
Block a user