Skip to content

Api reference

components.iban.public.business_logic

external_provider_counterparty_data

get_external_payment_provider_counterparty_data

get_external_payment_provider_counterparty_data(
    iban_id: str | int | UUID,
    provider_name: Literal[Revolut],
    provider_account_name: str,
) -> RevolutCounterPartyInfo
get_external_payment_provider_counterparty_data(
    iban_id, provider_name, provider_account_name
)
Source code in components/iban/public/business_logic/external_provider_counterparty_data.py
def get_external_payment_provider_counterparty_data(  # noqa: D103
    iban_id: str | int | UUID,
    provider_name: ExternalPaymentProvider,
    provider_account_name: str,
) -> Optional[CounterPartyDataStructure]:
    entry = _get_external_payment_provider_counterparty_data(
        iban_id=iban_id,
        provider_name=provider_name,
        provider_account_name=provider_account_name,
    )

    if not entry or not entry.counterparty_data:
        return None

    if provider_name == ExternalPaymentProvider.Revolut:
        return RevolutCounterPartyInfo.from_dict(entry.counterparty_data)
    else:
        # Other providers are not implemented yet, we don't have counterparty data
        # in any other format than RevolutCounterPartyInfo
        raise NotImplementedError(
            "Only Revolut counterparty data is implemented for now"
        )

reset_external_payment_provider_counterparty_data

reset_external_payment_provider_counterparty_data(
    iban_id, provider_name
)

We delete all external references for this IBAN and provider. This can be useful if we update an IBAN data directly (we change the IBAN code in Flask admin for instance) as the IBAN code on the provider's side will still be the old one if we keep the same counterparty id.

Source code in components/iban/public/business_logic/external_provider_counterparty_data.py
def reset_external_payment_provider_counterparty_data(
    iban_id: str | int | UUID,
    provider_name: ExternalPaymentProvider,
) -> None:
    """
    We delete all external references for this IBAN and provider. This can
    be useful if we update an IBAN data directly (we change the IBAN code
    in Flask admin for instance) as the IBAN code on the provider's side will
    still be the old one if we keep the same counterparty id.
    """
    current_session.query(IBANExternalPaymentProviderCounterpartyData).filter(  # noqa: ALN085
        IBANExternalPaymentProviderCounterpartyData.iban_id == str(iban_id),
        IBANExternalPaymentProviderCounterpartyData.provider_name == provider_name,
    ).delete()

update_external_payment_provider_counterparty_data

update_external_payment_provider_counterparty_data(
    iban_id,
    provider_name,
    provider_account_name,
    counterparty_data,
    commit=True,
)
Source code in components/iban/public/business_logic/external_provider_counterparty_data.py
def update_external_payment_provider_counterparty_data(  # noqa: D103
    iban_id: str | int | UUID,
    provider_name: ExternalPaymentProvider,
    provider_account_name: str,
    counterparty_data: CounterPartyDataStructure,
    commit: bool = True,
) -> IBANExternalPaymentProviderCounterpartyData:
    entry = _get_external_payment_provider_counterparty_data(
        iban_id=iban_id,
        provider_name=provider_name,
        provider_account_name=provider_account_name,
    )

    if entry:
        entry.counterparty_data = counterparty_data.to_dict()
    else:
        entry = IBANExternalPaymentProviderCounterpartyData(
            iban_id=str(iban_id),
            provider_name=provider_name,
            provider_account_name=provider_account_name,
            counterparty_data=counterparty_data.to_dict(),
        )
        current_session.add(entry)

    if commit:
        current_session.commit()
    return entry

components.iban.public.entities

components.iban.public.models