Source code for q2_cores.Symitar.mappers.get_all_cards

from typing import List
from lxml import objectify

from q2_sdk.models.card import Card
from q2_sdk.models.cores.mappers.card_list import BaseCardListMapper
from q2_sdk.models.cores.queries.base_query import BaseQuery
from ...Symitar.queries import GetAllCardsQuery
from ...Symitar.models import parser


ACTIVE_CARD_STATUSES = [0, 1]


[docs] class GetAllCardsMapper(BaseCardListMapper):
[docs] @staticmethod def parse_returned_queries(list_of_queries: List[BaseQuery]) -> List[Card]: assert all(isinstance(x, GetAllCardsQuery) for x in list_of_queries), ( "Queries must be all be instances of Symitar.queries.GetAllCardsQuery" ) card_records_models = [] responses = [x.raw_core_response for x in list_of_queries] for response in responses: symitar_response = parser.parse(response) root = objectify.fromstring(symitar_response.payload) card_records = root.findall(".//CARDS/CARD") for card in card_records: is_cancelled = card.CARDSTATUS.pyval not in ACTIVE_CARD_STATUSES card_records_models.append( Card( card.NUMBER.text, card.CARDTYPE.text, expiration_date=card.CARDEXPIRATIONDATE.text, effective_date=card.CARDEFFECTIVEDATE.text, cancelled=is_cancelled, account_holder_name=card.findtext("CARDNAME", ""), ) ) return card_records_models