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 SymitarBaseQuery
from ...Symitar.models import parser
SYMITAR_MAPPINGS = {"new_due_date": "NEWDUEDATE"}
[docs]
class SkipLoanMapper(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], SymitarBaseQuery), (
"Query must be an instance of Symitar.queries.SymitarBaseQuery"
)
response = list_of_queries[0].raw_core_response
symitar_response = parser.parse(response)
root = objectify.fromstring(symitar_response.payload)
data = {"new_due_date": root.findtext(SYMITAR_MAPPINGS["new_due_date"])}
return data