Friday, 22 August 2014

Storing xml data on django Model



I am trying to store XML file data from msn weather service on my models as you can see the code below



class XmlListConfig(list):
def __init__(self, aList):
for element in aList:
if element:
# treat like dict
if len(element) == 1 or element[0].tag != element[1].tag:
self.append(XmlDictConfig(element))
# treat like list
elif element[0].tag == element[1].tag:
self.append(XmlListConfig(element))
elif element.text:
text = element.text.strip()
if text:
self.append(text)

class XmlDictConfig(dict):
def __init__(self, parent_element):
if parent_element.items():
self.update(dict(parent_element.items()))
for element in parent_element:
if element:
if len(element) == 1 or element[0].tag != element[1].tag:
aDict = XmlDictConfig(element)
else:
aDict = {element[0].tag: XmlListConfig(element)}
if element.items():
aDict.update(dict(element.items()))
self.update({element.tag: aDict})
elif element.items():
self.update({element.tag: dict(element.items())})
else:
self.update({element.tag: element.text})

def fixdate(value):
return datetime.date(*time.strptime(value, '%Y-%m-%d')[:3])

class Command(NoArgsCommand):
help = "This will update the weather reports by fetching xml from msn and storing data"

def handle_noargs(self, **options):
tree = ElementTree()
path = urllib2.urlopen('http://ift.tt/1qw0HLF')
tree = ET.parse(path)
root = tree.getroot()
xmllist=[]
a = 0
for i in root:
xmllist = xmllist + [XmlDictConfig(i)]
for i in xmllist:
date = fixdate(i['date']) #Date, date=date heading=i['heading']
a = Forecast.objects.create(mintemp=i['low'] ,maxtemp=i['high'],wind=i['wind'],rain=i['precipitation'],date=date)
a.save()
print "Data Updated"


I get a key error KeyError: 'date'


No comments:

Post a Comment