diff --git a/importer.py b/importer.py index b47f0f94766a327bf84981b5873129e4b065fc73..f1b1738a84f256803e9b59168a64feea5dd4fe1a 100644 --- a/importer.py +++ b/importer.py @@ -63,14 +63,15 @@ def import_from(source=None, id=None): events_raw.append(rowdata) # parse single appointments - singletable = basetable.xpath("//table[@cellpadding='3']/tr/td[text()='Einmalige Termine:']")[0].getparent().getparent() - for row in singletable.xpath("tr/td[2]"): - rowdata = {} - rowdata['place'] = row.xpath("text()[2]")[0][2:-1] - rowdata['dates'] = [row.xpath("text()[1]")[0][4:14]] - rowdata['start'] = row.xpath("text()[1]")[0][17:22] - rowdata['end'] = row.xpath("text()[1]")[0][27:32] - events_raw.append(rowdata) + if basetable.xpath("//table[@cellpadding='3']/tr/td[text()='Einmalige Termine:']"): + singletable = basetable.xpath("//table[@cellpadding='3']/tr/td[text()='Einmalige Termine:']")[0].getparent().getparent() + for row in singletable.xpath("tr/td[2]"): + rowdata = {} + rowdata['place'] = row.xpath("text()[2]")[0][2:-1] + rowdata['dates'] = [row.xpath("text()[1]")[0][4:14]] + rowdata['start'] = row.xpath("text()[1]")[0][17:22] + rowdata['end'] = row.xpath("text()[1]")[0][27:32] + events_raw.append(rowdata) #now we have to filter our data and do some lookups for j in events_raw: @@ -79,7 +80,11 @@ def import_from(source=None, id=None): fmt= "%d.%m.%Y %H:%M" e['time'] = datetime.strptime("%s %s"%(k,j['start']) ,fmt) e['duration'] = int((datetime.strptime("%s %s"%(k,j['end']) ,fmt) - e['time']).seconds/60) - e['place'] = query("SELECT name FROM places WHERE (campus_name = ?) OR ((NOT campus_name) AND name = ?)",j['place'],j['place'])[0]['name']; + dbplace = query("SELECT name FROM places WHERE (campus_name = ?) OR ((NOT campus_name) AND name = ?)",j['place'],j['place']) + if dbplace: + e['place'] = dbplace[0]['name'] + else: + e['place'] = 'Unbekannter Ort ('+j['place']+')' e['title'] = i['type'] events.append(e) # it is parsed.