Source code for q2_cores.Symitar.mappers.get_shares

from typing import List

from lxml import objectify
from q2_sdk.models.cores.mappers.base_mapper import BaseMapper
from q2_sdk.models.cores.queries.base_query import BaseQuery

from q2_cores.Symitar.queries import GetSharesQuery
from ...Symitar.models import parser

SYMITAR_MAPPINGS = {"share_id": "ID", "amount": "AMOUNT"}


[docs] class GetSharesMapper(BaseMapper):
[docs] @staticmethod def parse_returned_queries(list_of_queries: List[BaseQuery]) -> dict: assert len(list_of_queries) == 1 assert isinstance(list_of_queries[0], GetSharesQuery), ( "Query must be an instance of Symitar.queries.GetSharesQuery" ) response = list_of_queries[0].raw_core_response symitar_response = parser.parse(response) root = objectify.fromstring(symitar_response.payload) try: shares = root.FUNDINGSHARES.SHARE except AttributeError: shares = [] eligible_shares = [] for share in shares: eligible_shares.append({ "share_id": share.findtext(SYMITAR_MAPPINGS["share_id"]), "amount": share.findtext(SYMITAR_MAPPINGS["amount"]), }) return {"eligible_shares": eligible_shares}