Пример #1
0
    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
Пример #2
0
 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)
Пример #3
0
    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}"