import datetime, decimal
from .pset import pset
[docs]def Boolean(s):
if isinstance(s, basestring):
if s.lower() in ('true', 'yes', '1'):
return True
else:
return False
return bool(s)
[docs]def NOK(s):
return decimal.Decimal(s.replace(',','.'))
[docs]def Datetime(s):
try:
return datetime.datetime.strptime(s, '%Y-%m-%d %H:%M')
except:
return None
[docs]def Date(s):
try:
return datetime.datetime.strptime(s, '%Y-%m-%d')
except:
return None
[docs]class xmlrec(pset):
convert = {
'date': Date,
'datetime': Datetime,
'int': int,
'bool': Boolean,
'NOK': NOK,
}
def __init__(self, soup, **types):
super(xmlrec,self).__init__()
for tag in soup.findAll(True):
name = str(tag.name).lower()
val = tag.string
if name in types:
t = types[name]
if t in self.convert:
val = self.convert[t](val)
elif 'all' in types:
t = types['all']
if t in self.convert:
val = self.convert[t](val)
self[name] = val