import os from xml.dom.ext.reader import Sax2 def rendermap(today=None, level=None): return_string = "" basedir = os.path.dirname(__file__) os.chdir(basedir) reader = Sax2.Reader() days = ["monday", "tuesday", "wednesday", "thursday", "friday"] if today is None: from time import strftime today = strftime("%A").lower() if level is None: level = 3 return_string += """\t\n" return_string += """\t\n" buildings = {} lecturers = {} doc = reader.fromStream(open("lecturers.xml")) for node in doc.getElementsByTagName("lecturer"): lecturers[node.getAttribute("code")] = node.getAttribute("name") modules = {} doc = reader.fromStream(open("modules-level%d.xml" % int(level))) for node in doc.getElementsByTagName("module"): code = node.getAttribute("code") modules[code] = {} for child in node.childNodes: if child.nodeType != child.ELEMENT_NODE: continue modules[code][child.nodeName] = child.childNodes[0].data timetable = {} doc = reader.fromStream(open("timetable-tb2-level%d.xml" % int(level))) markers = {} bubbles = "" for node in doc.getElementsByTagName("day"): if node.getAttribute("value") != today: continue for child in node.childNodes: if child.nodeType != child.ELEMENT_NODE: continue time = child.getAttribute("time") building = child.getAttribute("building") room = child.getAttribute("room") module_code = child.getAttribute("module") module_name = modules[module_code]['name'] lecturer = lecturers[modules[module_code]['lecturer']] if buildings.has_key(building): buildings[building] += 5 else: buildings[building] = 0 offset = buildings[building] if not markers.has_key(building): markers[building] = """\t
\n""" markers[building] += """\t\t\n\t\t\tmarker\n\t\t\n""" % (building, time, building, offset, offset, building, int(time), int(time)) bubbles += """\t
\n\t\tmarker\n\t\t%s:00: %s %s
\n\t\t%s %s
\n\t\t%s\n\t\tdelete\n\t
\n""" % (building, int(time), building, int(time), time, building.title(), room.upper(), module_code.upper(), module_name, lecturer, module_code) #end for #end for for building in markers: return_string += "%s\t
\n\n" % markers[building] return_string += bubbles return return_string