diff --git a/src/pretix/base/payment.py b/src/pretix/base/payment.py index c573ca8d20..be9af95a13 100644 --- a/src/pretix/base/payment.py +++ b/src/pretix/base/payment.py @@ -1,3 +1,5 @@ +from decimal import Decimal + from pretix.base.settings import SettingsSandbox @@ -13,6 +15,23 @@ class BasePaymentProvider: def __str__(self): return self.identifier + @property + def is_enabled(self): + """ + Returns, whether or whether not this payment provider is enabled. + By default, this is determined by the value of a setting. + """ + return self.settings.get('_enabled', as_type=bool) + + def calculate_fee(self, price): + """ + Calculate the fee for this payment provider which will be added to + the final price if the price before fees (but after taxes) is 'price'. + """ + fee_abs = self.settings.get('_fee_abs', as_type=Decimal, default=0) + fee_percent = self.settings.get('_fee_percent', as_type=Decimal, default=0) + return price * fee_percent / 100 + fee_abs + @property def verbose_name(self) -> str: """ diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 32960dd3b7..156656b877 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -157,7 +157,7 @@ class SettingsSandbox: del self._event.settings[self._convert_key(key)] def get(self, key, default=None, as_type=str): - return self._event.settings.get(self._convert_key(key), default=default, as_type=type) + return self._event.settings.get(self._convert_key(key), default=default, as_type=as_type) def set(self, key, value): self._event.settings.set(self._convert_key(key), value)