The application I was working on used a Flash slide show. The configuration on the slide show was done from a xml file. The task was to make this configuration manageable from the Django admin.
I have created a model that represents the elements of the xml file. All I need was a way to convert the python database object to a xml representation.
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.contenttypes.models import ContentType
from django.db.models.signals import post_save, post_delete
from lxml.etree import ElementTree, Element, SubElement
def __init__(self, model, file_name):
self.model = model
self.file_name = file_name
content_type = ContentType.objects.get_for_model(model=self.model)
model_class = content_type.model_class()
object_name = model_class._meta.object_name
root = Element((object_name + 's').lower())
element_tree = ElementTree(root)
for object in model_class.objects.all():
element = SubElement(root, object_name.lower())
for field in object._meta.fields:
child = SubElement(element, field.name)
value = getattr(object, field.name)
if value != None:
if isinstance(value, models.base.Model):
# This field is a foreign key, so save the primary key
# of the referring object
pk_name = value._meta.pk.name
pk_value = getattr(value, pk_name)
child.text = unicode(pk_value)
child.text = unicode(value)
new_file = open(self.file_name, 'w')
element_tree.write(new_file, pretty_print=True, xml_declaration=True, encoding='utf-8')
picture = models.CharField("Picture", blank=True, max_length=100)
title = models.CharField("Title", blank=True, max_length=100)
link = models.URLField("Link", verify_exists=False, blank=True)
color = models.CharField("Color", blank=True, max_length=100)
verbose_name = "Item"
verbose_name_plural = "Items"
def item_handler(sender, **kwargs):
writer = XMLModelWriter(Item, 'D:/test/items.xml')
ContentType object is used to track all of the models installed, providing a high-level, generic interface for working with the models. Item objects are converted to a xml document, each time the user creates or modifies Item objects.
This code requires the lxml python library.
Finally, there’s another very important peculiarity of what does Cialis that brings it so high above its alternatives. It is the only med that is available in two versions – one intended for use on as-needed basis and one intended for daily use. As you might know, Viagra and Levitra only come in the latter of these two forms and should be consumed shortly before expected sexual activity to ensure best effect. Daily Cialis, in its turn, contains low doses of Tadalafil, which allows to build its concentration up in your system gradually over time and maintain it on acceptable levels, which, consequently, makes it possible for you to enjoy sex at any moment without having to time it.