From a6fd310f99a82b27ad7bc6f25b3e4b593e9e14e8 Mon Sep 17 00:00:00 2001
From: Andreas <andreasv@fsmpi.rwth-aachen.de>
Date: Thu, 6 Oct 2016 21:53:44 +0200
Subject: [PATCH] fixed campus importer

---
 importer.py | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/importer.py b/importer.py
index b47f0f9..f1b1738 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.
-- 
GitLab