Source code for q2_sdk.hq.models.hade

from typing import Optional, Any

from lxml import etree

from .xml_helper import find_with_default
from ...tools.utils import to_bool


TYPES_TO_BOOLIFY = ("Bool", "Boolean")

TYPES_TO_PYVAL = ("Bool", "Boolean", "Currency", "Date", "Int", "Integer", "Number")


[docs] class HADE: """ Object representation of an Account HADE (Host Account Data Element) """ def __init__(self, element: etree.Element): self.element = element self.host_acct_id: Optional[int] = find_with_default( element, "HostAccountID", data_type=int ) self.id: Optional[int] = find_with_default(element, "HADE_ID", data_type=int) self.name: Optional[str] = find_with_default(element, "HADEName", data_type=str) self.description: Optional[str] = find_with_default(element, "HADEDesc") self.type: Optional[str] = find_with_default(element, "HADEDataType") self.display_order: Optional[int] = find_with_default( element, "DisplayOrder", data_type=int ) self.additional_description: Optional[str] = find_with_default( element, "AdditionalHadeDesc" ) self._value = None @property def value(self) -> Any: if not self._value: text_only = Any if self.type in TYPES_TO_PYVAL else str self._value = find_with_default( self.element, "DataValue", data_type=text_only ) if self.type in TYPES_TO_BOOLIFY: self._value = to_bool(str(self._value)) return self._value def __repr__(self): return "<Object HADE: {}-{}>".format(self.host_acct_id, self.id)