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 = None self._name = None self._description = None self._type = None self._display_order = None self._additional_description = None self._value = None @property def id(self) -> Optional[int]: if self._id is None: self._id = find_with_default(self.element, "HADE_ID", data_type=int) return self._id @property def name(self) -> Optional[str]: if self._name is None: self._name = find_with_default(self.element, "HADEName", data_type=str) return self._name @property def description(self) -> Optional[str]: if self._description is None: self._description = find_with_default(self.element, "HADEDesc") return self._description @property def type(self) -> Optional[str]: if self._type is None: self._type = find_with_default(self.element, "HADEDataType") return self._type @property def display_order(self) -> Optional[int]: if self._display_order is None: self._display_order = find_with_default( self.element, "DisplayOrder", data_type=int ) return self._display_order @property def additional_description(self) -> Optional[str]: if self._additional_description is None: self._additional_description = find_with_default( self.element, "AdditionalHadeDesc" ) return self._additional_description @property def value(self) -> Any: if self._value is None: 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)