# -*- coding: utf-8 -*- import datetime import dingguo import string import email import ioex import re import BeautifulSoup def parse_order_confirmation_mail(mail): assert isinstance(mail, email.message.Message) html_mail = mail.get_payload()[0].get_payload()[1].get_payload(decode = True) doc = BeautifulSoup.BeautifulSoup(html_mail) order_attr = re.search( ur'Bestelldatum:(?P\d+)' + ur'Benutzername:(?P.*)' + ur'Name', doc.find(text = 'Bestelldatum:').findParent('table').text, re.UNICODE, ).groupdict() user = ''.join([c if (c in string.printable) else '' for c in order_attr['user']]) order = dingguo.Order( customer_id = user, order_date = datetime.datetime.strptime(order_attr['date'], '%d%m%y').date(), order_id = u'%s-%s' % (user, order_attr['date']), platform = u'hm', ) for article_tag in [t.findParents('tr')[2] for t in doc.findAll(text = 'Art.-Nr.:')]: article_subtags = article_tag.findAll(recursive = False) article = re.search( ur'Art.-Nr.:(?P[\d-]+)' + ur'Beschreibung:(?P