Source code for q2_sdk.models.tip.schemas.funds_transfer

from typing import Optional
from lxml import objectify, etree
from dataclasses import dataclass, field
from q2_sdk.models.tip.schemas.base import TIPModel, TIPRequest
from q2_sdk.models.tip.schemas import descriptions
from q2_sdk.models.tip.exceptions import (
    TIPModelValidationFromLxmlObjectifyException,
    TIPModelParsingException,
)
from q2_sdk.models.tip.variables import TransactionTypeEnum, TransferDirection


[docs] @dataclass class FundsTransferTransactionDetails(TIPModel): """ FundsTransferTransactionDetails TIPModel """ direction: TransferDirection = field( metadata={ "description": descriptions.FT_DIRECTION_DESCRIPTION, } ) originating_account: Optional[str] = field( metadata={"description": descriptions.FT_ORIGINATING_ACCOUNT_DESCRIPTION} ) to_account: Optional[str] = field( metadata={ "description": descriptions.FT_TO_ACCOUNT_DESCRIPTION, } )
[docs] @classmethod def model_validate_from_elem( cls, data: etree.Element ) -> "FundsTransferTransactionDetails": """ Create a FundsTransferTransactionDetails instance from XML element data. :param data: etree Element containing funds transfer transaction details :return: FundsTransferTransactionDetails instance :raises TIPModelValidationFromLxmlObjectifyException: If data is not an ObjectifiedElement """ if isinstance(data, objectify.ObjectifiedElement): try: try: originating_account = data.OriginatingAccount.text except AttributeError: originating_account = None try: to_account = data.ToAccount.text except AttributeError: to_account = None return cls( direction=TransferDirection.from_elem_str( TIPModel.parse_str(data.Direction.text) ), originating_account=TIPModel.parse_str_optional( originating_account ), to_account=TIPModel.parse_str_optional(to_account), ) except AttributeError as e: raise TIPModelParsingException( f"Missing required attribute in obj_elem: {str(e)}" ) raise TIPModelValidationFromLxmlObjectifyException(cls.__name__, type(data))
[docs] @dataclass class FundsTransferTIPRequest(TIPRequest): """ FundsTransferTIPRequest TIPRequest. TIPRequests are converted to this class when TransactionType is FundsTransfer. """ funds_transfer: FundsTransferTransactionDetails
[docs] @classmethod def model_validate_from_elem(cls, data: etree.Element) -> "FundsTransferTIPRequest": """ Create a FundsTransferTIPRequest instance from XML element data. :param data: etree Element containing funds transfer TIP request data :return: FundsTransferTIPRequest instance :raises TIPModelValidationFromLxmlObjectifyException: If data is not an ObjectifiedElement """ if isinstance(data, objectify.ObjectifiedElement): tip_request_dc = TIPRequest.model_validate_from_elem(data) return cls( funds_transfer=FundsTransferTransactionDetails.model_validate_from_elem( TIPModel.try_getattr_from_elem( data, TransactionTypeEnum.FundsTransfer.value ) ), **(tip_request_dc.to_kwargs()), ) raise TIPModelValidationFromLxmlObjectifyException(cls.__name__, type(data))