Skip to content
Snippets Groups Projects
apps.py 2.66 KiB
Newer Older
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):
    name = "aleksis.apps.tezor"
    verbose_name = "AlekSIS — Tezor"
    dist_name = "AlekSIS-App-Tezor"

    urls = {
        "Repository": "https://edugit.org/AlekSIS/onboarding//AlekSIS-App-Tezor",
    }
    licence = "EUPL-1.2+"
Nik | Klampfradler's avatar
Nik | Klampfradler committed
    copyright_info = (
        ([2022], "Dominik George", "dominik.george@teckids.org"),
        ([2022], "Tom Teichler", "tom.teichler@teckids.org"),
    )

    def ready(self):
        from django.conf import settings  # noqa
Nik | Klampfradler's avatar
Nik | Klampfradler committed

        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"]:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
            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"]:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
            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"]:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
            variants["pledge"] = ("djp_sepa.providers.PaymentPledgeProvider", {})

        if prefs["payments__sdd_creditor_identifier"]:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
            variants["sdd"] = (
                "djp_sepa.providers.DirectDebitProvider",
                {
                    "creditor": prefs["payments__sdd_creditor"],
                    "creditor_identifier": prefs["payments__sdd_creditor_identifier"],
                },
            )