forked from CGM_Public/pretix_original
Unify all calls to register_payment_providers
This commit is contained in:
@@ -13,7 +13,7 @@ from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
from pretix.base.models import InvoiceAddress, Order, OrderPosition
|
||||
|
||||
from ..exporter import BaseExporter
|
||||
from ..signals import register_data_exporters, register_payment_providers
|
||||
from ..signals import register_data_exporters
|
||||
|
||||
|
||||
class OrderListExporter(BaseExporter):
|
||||
@@ -73,11 +73,10 @@ class OrderListExporter(BaseExporter):
|
||||
|
||||
writer.writerow(headers)
|
||||
|
||||
provider_names = {}
|
||||
responses = register_payment_providers.send(self.event)
|
||||
for rec, response in responses:
|
||||
provider = response(self.event)
|
||||
provider_names[provider.identifier] = provider.verbose_name
|
||||
provider_names = {
|
||||
k: v.verbose_name
|
||||
for k, v in self.event.get_payment_providers().items()
|
||||
}
|
||||
|
||||
sum_cache = {
|
||||
(o['order__id'], o['tax_rate']): o for o in
|
||||
|
||||
@@ -313,6 +313,19 @@ class Event(LoggedModel):
|
||||
|
||||
event_copy_data.send(sender=self, other=other)
|
||||
|
||||
def get_payment_providers(self) -> dict:
|
||||
from ..signals import register_payment_providers
|
||||
|
||||
responses = register_payment_providers.send(self)
|
||||
providers = {}
|
||||
for receiver, response in responses:
|
||||
if not isinstance(response, list):
|
||||
response = [response]
|
||||
for p in response:
|
||||
pp = p(self)
|
||||
providers[pp.identifier] = pp
|
||||
return providers
|
||||
|
||||
|
||||
def generate_invite_token():
|
||||
return get_random_string(length=32, allowed_chars=string.ascii_lowercase + string.digits)
|
||||
|
||||
@@ -24,7 +24,6 @@ from reportlab.platypus import (
|
||||
from pretix.base.i18n import language
|
||||
from pretix.base.models import Invoice, InvoiceAddress, InvoiceLine, Order
|
||||
from pretix.base.services.async import TransactionAwareTask
|
||||
from pretix.base.signals import register_payment_providers
|
||||
from pretix.celery_app import app
|
||||
from pretix.helpers.database import rolledback_transaction
|
||||
|
||||
@@ -32,12 +31,7 @@ from pretix.helpers.database import rolledback_transaction
|
||||
@transaction.atomic
|
||||
def build_invoice(invoice: Invoice) -> Invoice:
|
||||
with language(invoice.locale):
|
||||
responses = register_payment_providers.send(invoice.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(invoice.event)
|
||||
if provider.identifier == invoice.order.payment_provider:
|
||||
payment_provider = provider
|
||||
break
|
||||
payment_provider = invoice.event.get_payment_providers().get(invoice.order.payment_provider)
|
||||
|
||||
invoice.invoice_from = invoice.event.settings.get('invoice_address_from')
|
||||
|
||||
|
||||
@@ -30,9 +30,7 @@ from pretix.base.services.invoices import (
|
||||
)
|
||||
from pretix.base.services.locking import LockTimeoutException
|
||||
from pretix.base.services.mail import SendMailException, mail
|
||||
from pretix.base.signals import (
|
||||
order_paid, order_placed, periodic_task, register_payment_providers,
|
||||
)
|
||||
from pretix.base.signals import order_paid, order_placed, periodic_task
|
||||
from pretix.celery_app import app
|
||||
from pretix.multidomain.urlreverse import build_absolute_uri
|
||||
|
||||
@@ -366,12 +364,7 @@ def _perform_order(event: str, payment_provider: str, position_ids: List[str],
|
||||
email: str, locale: str, address: int, meta_info: dict=None):
|
||||
|
||||
event = Event.objects.get(id=event)
|
||||
responses = register_payment_providers.send(event)
|
||||
pprov = None
|
||||
for rec, response in responses:
|
||||
provider = response(event)
|
||||
if provider.identifier == payment_provider:
|
||||
pprov = provider
|
||||
pprov = event.get_payment_providers().get(payment_provider)
|
||||
if not pprov:
|
||||
raise OrderError(error_messages['internal'])
|
||||
|
||||
@@ -637,10 +630,11 @@ class OrderChangeManager:
|
||||
|
||||
def _recalculate_total_and_payment_fee(self):
|
||||
self.order.total = sum([p.price for p in self.order.positions.all()])
|
||||
if self.order.total == 0:
|
||||
payment_fee = Decimal('0.00')
|
||||
else:
|
||||
payment_fee = self._get_payment_provider().calculate_fee(self.order.total)
|
||||
payment_fee = Decimal('0.00')
|
||||
if self.order.total != 0:
|
||||
prov = self._get_payment_provider()
|
||||
if prov:
|
||||
payment_fee = prov.calculate_fee(self.order.total)
|
||||
self.order.payment_fee = payment_fee
|
||||
self.order.total += payment_fee
|
||||
self.order._calculate_tax()
|
||||
@@ -703,12 +697,7 @@ class OrderChangeManager:
|
||||
CachedTicket.objects.filter(order_position__order=self.order).delete()
|
||||
|
||||
def _get_payment_provider(self):
|
||||
responses = register_payment_providers.send(self.order.event)
|
||||
pprov = None
|
||||
for rec, response in responses:
|
||||
provider = response(self.order.event)
|
||||
if provider.identifier == self.order.payment_provider:
|
||||
return provider
|
||||
pprov = self.order.event.get_payment_providers().get(self.order.payment_provider)
|
||||
if not pprov:
|
||||
raise OrderError(error_messages['internal'])
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ from django.db.models import Count, Sum
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from pretix.base.models import Event, Item, ItemCategory, Order, OrderPosition
|
||||
from pretix.base.signals import register_payment_providers
|
||||
|
||||
|
||||
class DummyObject:
|
||||
@@ -182,11 +181,10 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]],
|
||||
}
|
||||
num_total = dictsum(num_pending, num_paid)
|
||||
|
||||
provider_names = {}
|
||||
responses = register_payment_providers.send(event)
|
||||
for receiver, response in responses:
|
||||
provider = response(event)
|
||||
provider_names[provider.identifier] = provider.verbose_name
|
||||
provider_names = {
|
||||
k: v.verbose_name
|
||||
for k, v in event.get_payment_providers().items()
|
||||
}
|
||||
|
||||
for pprov, total in num_total.items():
|
||||
ppobj = DummyObject()
|
||||
|
||||
@@ -102,7 +102,8 @@ class EventOrderFilterForm(OrderFilterForm):
|
||||
self.event = kwargs.pop('event')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['item'].queryset = self.event.items.all()
|
||||
self.fields['provider'].choices += [(p['name'], p['verbose_name']) for p in self.get_payment_providers()]
|
||||
self.fields['provider'].choices += [(k, v.verbose_name) for k, v
|
||||
in self.event.get_payment_providers().items()]
|
||||
|
||||
def filter_qs(self, qs):
|
||||
fdata = self.cleaned_data
|
||||
|
||||
@@ -26,9 +26,7 @@ from pretix.base.models import (
|
||||
)
|
||||
from pretix.base.services import tickets
|
||||
from pretix.base.services.invoices import build_preview_invoice_pdf
|
||||
from pretix.base.signals import (
|
||||
event_live_issues, register_payment_providers, register_ticket_outputs,
|
||||
)
|
||||
from pretix.base.signals import event_live_issues, register_ticket_outputs
|
||||
from pretix.control.forms.event import (
|
||||
DisplaySettingsForm, EventSettingsForm, EventUpdateForm,
|
||||
InvoiceSettingsForm, MailSettingsForm, PaymentSettingsForm, ProviderForm,
|
||||
@@ -183,9 +181,7 @@ class PaymentSettings(EventPermissionRequiredMixin, TemplateView, SingleObjectMi
|
||||
@cached_property
|
||||
def provider_forms(self) -> list:
|
||||
providers = []
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
for provider in self.request.event.get_payment_providers().values():
|
||||
provider.form = ProviderForm(
|
||||
obj=self.request.event,
|
||||
settingspref='payment_%s_' % provider.identifier,
|
||||
@@ -655,9 +651,7 @@ class EventLive(EventPermissionRequiredMixin, TemplateView):
|
||||
)
|
||||
|
||||
has_payment_provider = False
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
for provider in self.request.event.get_payment_providers().values():
|
||||
if provider.is_enabled and provider.identifier != 'free':
|
||||
has_payment_provider = True
|
||||
break
|
||||
|
||||
@@ -27,9 +27,7 @@ from pretix.base.services.orders import (
|
||||
OrderChangeManager, OrderError, cancel_order, mark_order_paid,
|
||||
)
|
||||
from pretix.base.services.stats import order_overview
|
||||
from pretix.base.signals import (
|
||||
register_data_exporters, register_payment_providers,
|
||||
)
|
||||
from pretix.base.signals import register_data_exporters
|
||||
from pretix.base.views.async import AsyncAction
|
||||
from pretix.control.forms.filter import EventOrderFilterForm
|
||||
from pretix.control.forms.orders import (
|
||||
@@ -106,11 +104,7 @@ class OrderView(EventPermissionRequiredMixin, DetailView):
|
||||
|
||||
@cached_property
|
||||
def payment_provider(self):
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
if provider.identifier == self.order.payment_provider:
|
||||
return provider
|
||||
return self.request.event.get_payment_providers().get(self.order.payment_provider)
|
||||
|
||||
def get_order_url(self):
|
||||
return reverse('control:event.order', kwargs={
|
||||
|
||||
@@ -13,7 +13,6 @@ from pretix.base.models import Order
|
||||
from pretix.base.models.orders import InvoiceAddress
|
||||
from pretix.base.services.cart import set_cart_addons
|
||||
from pretix.base.services.orders import perform_order
|
||||
from pretix.base.signals import register_payment_providers
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.forms.checkout import (
|
||||
AddOnsForm, ContactForm, InvoiceAddressForm,
|
||||
@@ -353,9 +352,7 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
|
||||
@cached_property
|
||||
def provider_forms(self):
|
||||
providers = []
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
for provider in self.request.event.get_payment_providers().values():
|
||||
if not provider.is_enabled or not provider.is_allowed(self.request):
|
||||
continue
|
||||
fee = provider.calculate_fee(self._total_order_value)
|
||||
@@ -392,11 +389,7 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
|
||||
|
||||
@cached_property
|
||||
def payment_provider(self):
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
if provider.identifier == self.request.session['payment']:
|
||||
return provider
|
||||
return self.request.event.get_payment_providers().get(self.request.session['payment'])
|
||||
|
||||
def is_completed(self, request, warn=False):
|
||||
self.request = request
|
||||
@@ -464,11 +457,7 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep):
|
||||
|
||||
@cached_property
|
||||
def payment_provider(self):
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
if provider.identifier == self.request.session['payment']:
|
||||
return provider
|
||||
return self.request.event.get_payment_providers().get(self.request.session['payment'])
|
||||
|
||||
@cached_property
|
||||
def invoice_address(self):
|
||||
|
||||
@@ -8,7 +8,6 @@ from django.utils.timezone import now
|
||||
|
||||
from pretix.base.decimal import round_decimal
|
||||
from pretix.base.models import CartPosition, OrderPosition
|
||||
from pretix.base.signals import register_payment_providers
|
||||
|
||||
|
||||
class CartMixin:
|
||||
@@ -117,11 +116,9 @@ class CartMixin:
|
||||
return Decimal('0.00')
|
||||
payment_fee = 0
|
||||
if 'payment' in self.request.session:
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
if provider.identifier == self.request.session['payment']:
|
||||
payment_fee = provider.calculate_fee(total)
|
||||
provider = self.request.event.get_payment_providers().get(self.request.session['payment'])
|
||||
if provider:
|
||||
payment_fee = provider.calculate_fee(total)
|
||||
return payment_fee
|
||||
|
||||
|
||||
|
||||
@@ -18,9 +18,7 @@ from pretix.base.services.orders import cancel_order
|
||||
from pretix.base.services.tickets import (
|
||||
get_cachedticket_for_order, get_cachedticket_for_position,
|
||||
)
|
||||
from pretix.base.signals import (
|
||||
register_payment_providers, register_ticket_outputs,
|
||||
)
|
||||
from pretix.base.signals import register_ticket_outputs
|
||||
from pretix.multidomain.urlreverse import eventreverse
|
||||
from pretix.presale.forms.checkout import InvoiceAddressForm
|
||||
from pretix.presale.views import CartMixin, EventViewMixin
|
||||
@@ -46,11 +44,7 @@ class OrderDetailMixin:
|
||||
|
||||
@cached_property
|
||||
def payment_provider(self):
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
if provider.identifier == self.order.payment_provider:
|
||||
return provider
|
||||
return self.request.event.get_payment_providers().get(self.order.payment_provider)
|
||||
|
||||
def get_order_url(self):
|
||||
return eventreverse(self.request.event, 'presale:event.order', kwargs={
|
||||
@@ -112,9 +106,7 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TemplateView):
|
||||
)
|
||||
|
||||
ctx['can_change_method'] = False
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
for provider in self.request.event.get_payment_providers().values():
|
||||
if (provider.identifier != self.order.payment_provider and provider.is_enabled
|
||||
and provider.order_change_allowed(self.order)):
|
||||
ctx['can_change_method'] = True
|
||||
@@ -295,9 +287,7 @@ class OrderPayChangeMethod(EventViewMixin, OrderDetailMixin, TemplateView):
|
||||
@cached_property
|
||||
def provider_forms(self):
|
||||
providers = []
|
||||
responses = register_payment_providers.send(self.request.event)
|
||||
for receiver, response in responses:
|
||||
provider = response(self.request.event)
|
||||
for provider in self.request.event.get_payment_providers().values():
|
||||
if provider.identifier == self.order.payment_provider:
|
||||
continue
|
||||
if not provider.is_enabled or not provider.order_change_allowed(self.order):
|
||||
|
||||
Reference in New Issue
Block a user