Skip to content
Snippets Groups Projects
Commit 1036eb66 authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Merge branch 'renovate/django-payments-1.x' of...

Merge branch 'renovate/django-payments-1.x' of edugit.org:AlekSIS/onboarding/AlekSIS-App-Tezor into renovate/django-payments-1.x
parents 4a9f5fcf 978c1f37
No related branches found
No related tags found
1 merge request!15Update dependency django-payments to v1
from django.apps import apps
from django.db import OperationalError
from aleksis.core.util.apps import AppConfig
from aleksis.core.util.core_helpers import get_site_preferences
class DefaultConfig(AppConfig):
......@@ -18,59 +14,3 @@ class DefaultConfig(AppConfig):
([2022], "Dominik George", "dominik.george@teckids.org"),
([2022], "Tom Teichler", "tom.teichler@teckids.org"),
)
def ready(self):
from django.conf import settings # noqa
settings.PAYMENT_VARIANTS = {}
for app_config in apps.app_configs.values():
if hasattr(app_config, "get_payment_variants"):
try:
variants = app_config.get_payment_variants()
except OperationalError:
# Non-fatal, database is not yet ready
continue
for name, config in variants.items():
if name not in settings.PAYMENT_VARIANTS:
settings.PAYMENT_VARIANTS[name] = config
def get_payment_variants(self):
prefs = get_site_preferences()
variants = {}
if prefs["payments__sofort_api_id"]:
variants["sofort"] = (
"payments.sofort.SofortProvider",
{
"id": prefs["payments__sofort_api_id"],
"key": prefs["payments__sofort_api_key"],
"project_id": prefs["payments__sofort_project_id"],
"endpoint": "https://api.sofort.com/api/xml",
},
)
if prefs["payments__paypal_client_id"]:
variants["paypal"] = (
"payments.paypal.PaypalProvider",
{
"client_id": prefs["payments__paypal_client_id"],
"secret": prefs["payments__paypal_secret"],
"capture": not prefs["payments__paypal_capture"],
"endpoint": "https://api.paypal.com",
},
)
if prefs["payments__pledge_enabled"]:
variants["pledge"] = ("djp_sepa.providers.PaymentPledgeProvider", {})
if prefs["payments__sdd_creditor_identifier"]:
variants["sdd"] = (
"djp_sepa.providers.DirectDebitProvider",
{
"creditor": prefs["payments__sdd_creditor"],
"creditor_identifier": prefs["payments__sdd_creditor_identifier"],
},
)
return variants
INSTALLED_APPS = ["payments", "djp_sepa"]
PAYMENT_MODEL = "tezor.Invoice"
PAYMENT_VARIANT_FACTORY = "aleksis.apps.tezor.util.invoice.provider_factory"
overrides = ["PAYMENT_MODEL"]
overrides = ["PAYMENT_MODEL", "PAYMENT_VARIANT_FACTORY"]
def provider_factory(variant, payment=None):
from djp_sepa.providers import DirectDebitProvider, PaymentPledgeProvider # noqa
from payments.paypal import PaypalProvider # noqa
from payments.sofort import SofortProvider # noqa
if not payment:
raise KeyError("Could not configure payment provider without a payment.")
if not payment.group:
raise KeyError(
"Could not configure payment provider for a payment without an invoice group."
)
if not payment.group.client:
raise KeyError(
"Could not configure payment provider for an invoice group without a client."
)
client = payment.group.client
if variant == "sofort" and client.sofort_enabled:
return SofortProvider(
key=client.sofort_api_key, id=client.sofort_api_id, project_id=client.sofort_project_id
)
if variant == "paypal" and client.paypal_enabled:
return PaypalProvider(
client_id=client.paypal_client_id,
secret=client.paypal_secret,
capture=client.paypal_capture,
endpoint="https://api.paypal.com",
)
if variant == "pledge" and client.pledge_enabled:
return PaymentPledgeProvider()
if variant == "sdd" and client.sdd_enabled:
return DirectDebitProvider(
creditor=client.sdd_creditor,
creditor_identifier=client.sdd_creditor_identifier,
iban=client.sdd_iban,
bic=client.sdd_bic,
)
return KeyError("Provider not found or not configured for client.")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment