def _fill_doc(self, root, result): super(ResultSerializer, self)._fill_doc(root, result) SubElement(root, "log").text = result.log_url resultelem = SubElement(root, "result") idmapping = SubElement(resultelem, "idmapping") for designid, runtimeid in result.idmapping.iteritems(): mapping = SubElement(idmapping, "mapping") mapping.set("designid", tostr(designid)) mapping.set("runtimeid", tostr(runtimeid))
def __append_entity(self, parent, name, entity, parent_type): if (parent_type, name) in self.__alternate_style_fields: name += ".id" outer = SubElement(parent, name) if name not in ("cost", "configurationParameters"): inner = SubElement(outer, self.__get_tagname(entity)) assert(entity.is_persistent) inner.text = str(entity.id) else: outer.text = str(entity.id)
def serialize(self, e, pretty_print = True): assert isinstance(e, Entity) name = self.__get_tagname(e) + "Instance" parent = Element(name) for k, v in e._get_fields().iteritems(): if not v and v not in (0, False): SubElement(parent, k) elif isinstance(v, (tuple, set, list, frozenset)): for v2 in v: assert isinstance(v2, Entity) self.__append_entity(parent, k, v2, e.__class__) else: if isinstance(v, Entity): self.__append_entity(parent, k, v, e.__class__) else: child = SubElement(parent, k) child.text = unicode(v) return tostring(parent, pretty_print = pretty_print)