Example #1
0
 def to_xml(self, value):
     """Convert image data to be stored in a XML file, the image is enconded
     in base64. Image name and enconded value are returned."""
     img = image_to_b64(self._model(value).value)
     if img is not None:
         name, value = img
         return {'file_name': name, 'value': value}
     else:
         return {'value': value}
Example #2
0
    def to_xml(self, out, encoding=settings.DEFAULT_CHARSET):
        """Exports page data in a XML formated file. It stores
        page info as first item and value data following it.
        Files are base64 encoded and exported too.

        Example:
        <cms-page>
          <page path="/path/" template="homepage" description="Homepage"
                locale="en-gb" meta_title="Title" meta_description="Description"
                meta_keywords="Keywords" search_image="base64 encoded image"
                search_image_name="file name of search image"
                search_text="Search text"></page>
          <value name="heading" type="text" value="Page title"></value>
          <value name="an_image" type="image" value="bas64 enconded"></value>
          ...
        </cms-page>
        """
        xml = SimplerXMLGenerator(out=out, encoding=encoding)
        xml.startDocument()
        xml.startElement("cms-page", {})

        # store page info in first child
        data = {
            "path": self.path.path,
            "template": self.template,
            "description": self.description,
            "locale": self.path.locale,
            "meta_title": self.meta_title,
            "meta_description": self.meta_description,
            "meta_keywords": self.meta_keywords,
            "search_text": self.search_text,
        }
        if self.search_image:  # add image content if any
            img = image_to_b64(self.search_image)
            if img is not None:
                name, content = img
                data["search_image_name"] = name
                data["search_image"] = content

        xml.startElement("page", data)
        xml.endElement("page")

        # store values
        values = self.values.values_list("name", "type", "value")
        for name, value_type, value in values:
            attrs = {"name": name, "type": value_type, "value": value}

            if value_type in TYPES_MAP:
                attrs.update(TYPES_MAP[value_type]().to_xml(value))
            xml.startElement("value", attrs)
            xml.endElement("value")

        xml.endElement("cms-page")
        xml.endDocument()
        return out