def update_kml(self, request, response): change = KML.Change() create = KML.Create() delete = KML.Delete() doc = KML.Document(targetId=KmlPlacemark.DOC_ID) for id_, kpm in self.placemarks.items(): if kpm.is_new: style_url = KmlStyleUtils.get_style_url_for_callsign(kpm.callsign) model_url = None # KmlStyleUtils.get_model_url_for_callsign(kpm.callsign, request.host_url) placemark = kpm.get_placemark(style_url, model_url) doc.append(placemark) kpm.is_new = False else: kpm.generate_update(change = change, create = create, delete = delete) if doc.countchildren() > 0: create.append(doc) update = KML.Update(KML.targetHref(request.path_url)) if change.countchildren() > 0: update.append(change) if create.countchildren() > 0: update.append(create) if delete.countchildren() > 0: update.append(delete) network_link_control = KML.NetworkLinkControl(update) return KML.kml(network_link_control)