def encode_exception(self, message, version, code, locator=None): exception_attributes = { "exceptionCode": code } if locator: exception_attributes["locator"] = locator exception_text = (OWS("ExceptionText", message),) if message else () xml_tree = ElementTree(OWS("ExceptionReport", OWS("Exception", *exception_text, **exception_attributes ), version=version, **{ns_xml("lang"): "en"} )) xls_url = getattr(settings, "OWS11_EXCEPTION_XSL", None) if xls_url: xml_tree.getroot().addprevious(ProcessingInstruction( 'xml-stylesheet', 'type="text/xsl" href="%s"' % xls_url )) return xml_tree
def processingInstruction(self, target, data): pi = ProcessingInstruction(target, data) if self._root is None: self._root_siblings.append(pi) else: self._element_stack[-1].append(pi)
def ingest_element_internal(self, element): if element.tag in {"color", "align", "size", "b"}: if element.tag == "align": t = "div" else: t = "span" sub = DMWalkState( t, for_region=self.for_region).ingest_element(element).commit() csstag, transform = self.INLINE_TAGS.get( element.tag, (element.tag, lambda x: x)) sub.set("style", f"{csstag}: {transform(element.get('value'))}") self.root.append(sub) elif element.tag == "subtitle": sub = SubElement(self.root, "h2") sub.text = element.get("text") elif element.tag == "signboard": sbe = SubElement(self.root, "div", {"class": "signboard-element"}) SubElement(sbe, "h3").text = element.get("title") SubElement(sbe, "p").text = element.get("message") elif element.tag in {"sprite", "img"}: src = f"/api/private/ii?p={element.get('src')}" if self.for_region: src += f"&n={self.for_region}" sbe = SubElement( self.root, "img", { "class": f"dm-src-{element.tag}", "src": src, "width": element.get("width"), # Removed for good reason # "height": element.get("height") }, ) self.image_references.add(element.get("src")) elif element.tag == "card": sub = ProcessingInstruction("asi-include-card", f"card-id:{element.get('value')}") # We put this newline here to preserve the block-ness of the original element. sub.tail = "\n" self.root.append(sub) try: self.card_master_references.add(int(element.get("value"))) except ValueError: pass elif element.tag == "linkbutton": # FIXME: combine with normal button? sub = SubElement(self.root, "div", {"class": "button-wrapper"}) SubElement( sub, "a", { "href": make_link_inert(element.get("link_text")), "class": "btn btn-primary", }, ).text = element.get("button_text") elif element.tag == "button": sub = SubElement(self.root, "div", {"class": "button-wrapper"}) SubElement(sub, "button", { "class": "btn btn-primary", "disabled": "disabled" }).text = element.get("button_text") elif element.tag in {"hr"}: SubElement(self.root, element.tag) else: sub = SubElement(self.root, "div") sub.set("style", "background: red; color: white") sub.text = f"DMWalkState: ignored an element of type {element.tag}"