def add_xml(self, doc, container_element): for m in self.members_type_dict: i_el = doc.createElement(m) container_element.appendChild(i_el) if m in self.__dict__: v = self.__dict__[m] if v is None: continue t = self.members_type_dict[m] if phantom_is_primative(t): txt_el = doc.createTextNode(str(v)) i_el.appendChild(txt_el) else: v.add_xml(doc, i_el)
def add_xml(self, doc, container_element): for l in self.type_list: member_el = doc.createElement('member') container_element.appendChild(member_el) if l is None: continue if phantom_is_primative(type(l)): txt_el = doc.createTextNode(str(l)) member_el.appendChild(txt_el) else: #l_el = doc.createElement(l.name) #member_el.appendChild(l_el) #l.add_xml(doc, l_el) l.add_xml(doc, member_el)
def set_value(self, name, value): if name in self.optional_param_keys: t = self.optional_param_keys[name] elif name in self.needed_param_keys: t = self.needed_param_keys[name] elif name in self.optional_param_list_keys: raise PhantomAWSException("We cannot work with this type yet") elif name in self.needed_param_list_keys: raise PhantomAWSException("We cannot work with this type yet") else: raise PhantomAWSException("%s is not a known value name" % (name)) if not phantom_is_primative(t): raise PhantomAWSException("We cannot work with this type yet") self.__setattr__(name, t(value))
def _do_list_param(self, params, p, type_d): for pl in type_d.keys(): ndx = p.find(pl) if ndx == 0: if phantom_is_primative(type_d[pl]): val = self._get_value(p, params[p], type_d[pl]) if val: if pl not in self.__dict__: self.__dict__[pl] = [] self.__dict__[pl].append(val) else: if pl not in self.__dict__: self.__dict__[pl] = [] l = self.__dict__[pl] member_info = p.split('.', 3) member_ndx = int(member_info[2]) for i in range(len(l), int(member_ndx)): l.append(type_d[pl]()) element = l[member_ndx-1] value_name = member_info[3] element.set_value(value_name, params[p])