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

from dataclasses import dataclass
from lxml import objectify, etree
from typing import List
from q2_sdk.models.tip.schemas.base import TIPModel, TIPRequest
from q2_sdk.models.tip.exceptions import (
    TIPModelValidationFromLxmlObjectifyException,
    TIPModelParsingException,
)
from q2_sdk.models.tip.variables import TransactionTypeEnum
from q2_sdk.models.tip.schemas.ach import AchDetail


[docs] @dataclass class AchBatch(TIPModel): details: List[AchDetail]
[docs] @classmethod def model_validate_from_elem(cls, data: etree.Element) -> "AchBatch": if isinstance(data, objectify.ObjectifiedElement): details = TIPModel.try_getattr_from_elem(data, "Details") val_details = [ AchDetail.model_validate_from_elem(pair) for pair in details.getchildren() ] try: return cls(details=val_details) except AttributeError as e: raise TIPModelParsingException( f"Missing required attribute in obj_elem: {str(e)}" ) raise TIPModelValidationFromLxmlObjectifyException(cls.__name__, type(data))
[docs] @dataclass class AchPassThruTransactionDetails(TIPModel): """ AchPassThruTransactionDetails TIPModel """ batches: List[AchBatch]
[docs] @classmethod def model_validate_from_elem( cls, data: etree.Element ) -> "AchPassThruTransactionDetails": """ Create an AchTransactionDetails instance from XML element data. :param data: etree Element containing ACH transaction details :return: AchTransactionDetails instance :raises TIPModelValidationFromLxmlObjectifyException: If data is not an ObjectifiedElement """ if isinstance(data, objectify.ObjectifiedElement): batches = TIPModel.try_getattr_from_elem(data, "Batches") val_batches = [ AchBatch.model_validate_from_elem(batch) for batch in batches.getchildren() ] try: return cls( batches=val_batches, ) except AttributeError as e: raise TIPModelParsingException( f"Missing required attribute in obj_elem: {str(e)}" ) raise TIPModelValidationFromLxmlObjectifyException(cls.__name__, type(data))
[docs] @dataclass class AchPassThruTIPRequest(TIPRequest): """ AchPassThruTIPRequest TIPRequest. TIPRequests are converted to this class when TransactionType is AchPassThru. """ ach: AchPassThruTransactionDetails
[docs] @classmethod def model_validate_from_elem(cls, data: etree.Element) -> "AchPassThruTIPRequest": """ Create an AchTIPRequest instance from XML element data. :param data: etree Element containing ACH TIP request data :return: AchTIPRequest 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( ach=AchPassThruTransactionDetails.model_validate_from_elem( TIPModel.try_getattr_from_elem(data, TransactionTypeEnum.Ach.value) ), **(tip_request_dc.to_kwargs()), ) raise TIPModelValidationFromLxmlObjectifyException(cls.__name__, type(data))