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}
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