def _transaction_fromxml(cls, element): subelements = gcxml.create_subelement_map(element) transaction_id = gcxml.get_element_text(subelements["trn:id"]) currency = gcdomain.Commodity.FromXml(subelements["trn:currency"]) date_posted = gcdomain.Timestamp.FromXml(subelements["trn:date-posted"]) date_entered = gcdomain.Timestamp.FromXml(subelements["trn:date-entered"]) description = gcxml.get_element_text(subelements["trn:description"]) if "trn:slots" in subelements: slots = gcxml.apply_to_children(gcdomain.Slot.FromXml, subelements["trn:slots"]) else: slots = [] splits = gcxml.apply_to_children(gcdomain.Split.FromXml, subelements["trn:splits"]) return cls(transaction_id, currency, date_posted, date_entered, description, slots, splits)
def _slot_fromxml(cls, element): subelements = gcxml.create_subelement_map(element) key = gcxml.get_element_text(subelements["slot:key"]) value_element = subelements["slot:value"] slot_type = value_element.getAttribute("type") if slot_type == cls.FRAME: value = gcxml.apply_to_children(cls.FromXml, value_element) else: value = gcxml.get_element_text(value_element) return cls(key, value, slot_type)
def _account_fromxml(cls, element): subelements = gcxml.create_subelement_map(element) name = gcxml.get_element_text(subelements["act:name"]) account_id = gcxml.get_element_text(subelements["act:id"]) account_type = gcxml.get_element_text(subelements["act:type"]) if "act:commodity" in subelements: commodity = gcdomain.Commodity.FromXml(subelements["act:commodity"]) commodity_scu = gcxml.get_element_text(subelements["act:commodity-scu"]) else: commodity = None commodity_scu = None if "act:slots" in subelements: slots = gcxml.apply_to_children(gcdomain.Slot.FromXml, subelements["act:slots"]) else: slots = [] if "act:parent" in subelements: parent_id = gcxml.get_element_text(subelements["act:parent"]) else: parent_id = None return cls(name, account_id, account_type, commodity, commodity_scu, slots, parent_id)