Source code for polaris.integrations

import sys
from typing import Callable
from polaris.integrations.info import default_info_func, registered_info_func
from polaris.integrations.fees import calculate_fee, registered_fee_func
from polaris.integrations.forms import TransactionForm, CreditCardForm
from polaris.integrations.toml import get_stellar_toml, registered_toml_func
from polaris.integrations.javascript import (
    scripts,
    registered_scripts_func,
    TemplateScript,
)
from polaris.integrations.customers import (
    CustomerIntegration,
    registered_customer_integration,
)
from polaris.integrations.rails import RailsIntegration, registered_rails_integration
from polaris.integrations.sep31 import (
    SEP31ReceiverIntegration,
    registered_sep31_receiver_integration,
)
from polaris.integrations.transactions import (
    DepositIntegration,
    WithdrawalIntegration,
    registered_deposit_integration,
    registered_withdrawal_integration,
)


[docs]def register_integrations( deposit: DepositIntegration = None, withdrawal: WithdrawalIntegration = None, sep31_receiver: SEP31ReceiverIntegration = None, rails: RailsIntegration = None, toml: Callable = None, scripts: Callable = None, fee: Callable = None, sep6_info: Callable = None, customer: CustomerIntegration = None, ): """ Registers the integration classes and functions with Polaris Call this function in your app's Django AppConfig.ready() function: :: from django.apps import AppConfig class PolarisIntegrationApp(AppConfig): name = 'Polaris Integration' verbose_name = name def ready(self): from polaris.integrations import register_integrations from myapp.integrations import ( MyDepositIntegration, MyWithdrawalIntegration, MyCustomerIntegration, toml_integration, fee_integrations, scripts_integration, info_integration ) register_integrations( deposit=MyDepositIntegration(), withdrawal=MyWithdrawalIntegration(), customer=MyCustomerIntegration(), toml=toml_integration, scripts=scripts_integration, sep6_info=info_integration, fee=fee_integration ) Simply pass the integration classes or functions you use. :param deposit: the ``DepositIntegration`` subclass instance to be used by Polaris :param withdrawal: the ``WithdrawalIntegration`` subclass instance to be used by Polaris :param sep31_receiver: the ``SEP31ReceiverIntegration`` subclass instance to be used by Polaris :param rails: the ``RailsIntegration`` subclass instance to be used by Polaris :param toml: a function that returns stellar.toml data as a dictionary :param scripts: a function that returns a list of script tags as strings :param fee: a function that returns the fee that would be charged :param sep6_info: a function that returns the /info `fields` or `types` values for an Asset :param customer: the ``CustomerIntegration`` subclass instance to be used by Polaris :raises ValueError: missing argument(s) :raises TypeError: arguments are not subclasses of DepositIntegration or Withdrawal """ this = sys.modules[__name__] if deposit and not issubclass(deposit.__class__, DepositIntegration): raise TypeError("deposit must be a subclass of DepositIntegration") elif withdrawal and not issubclass(withdrawal.__class__, WithdrawalIntegration): raise TypeError("withdrawal must be a subclass of WithdrawalIntegration") elif toml and not callable(toml): raise TypeError("toml parameter is not callable") elif scripts and not callable(scripts): raise TypeError("scripts parameter is not callable") elif fee and not callable(fee): raise TypeError("fee parameter is not callable") elif sep6_info and not callable(sep6_info): raise TypeError("info parameter is not callable") elif customer and not issubclass(customer.__class__, CustomerIntegration): raise TypeError("customer must be a subclass of CustomerIntegration") elif sep31_receiver and not issubclass( sep31_receiver.__class__, SEP31ReceiverIntegration ): raise TypeError("send must be a subclass of SEP31ReceiverIntegration") elif rails and not issubclass(rails.__class__, RailsIntegration): raise TypeError("rails must be a subclass of RailsIntegration") for obj, attr in [ (deposit, "registered_deposit_integration"), (withdrawal, "registered_withdrawal_integration"), (toml, "registered_toml_func"), (scripts, "registered_scripts_func"), (fee, "registered_fee_func"), (sep6_info, "registered_info_func"), (customer, "registered_customer_integration"), (sep31_receiver, "registered_sep31_receiver_integration"), (rails, "registered_rails_integration"), ]: if obj: setattr(this, attr, obj)