In PropertyObjects kann man auch Auswahllisten angeben, von denen der Anwender eine aus mehreren Optionen auswählen muss. Bei den Professoren-Seiten war dies eine der statisch vorhandenen Personen-Kategorien. Bei den Vorlesungs-Seiten hingegen wird eine Auswahlliste für alle angelegten Dozenten benötigt. Diese Liste muss dynamisch aus allen eingegebenen Professoren und Mitarbeitern erzeugt werden.
Dazu wird ein weiteres Python-Script benötigt, das alle Dozenten einsammeln und der Auswahlliste zur Verfügung stellen kann. Das Script ähnelt dem Script von Seite sehr und unterscheidet sich lediglich in folgender Zeile:
Auszug aus Python-Script: /fha/informatik/vorlesungen/getDozentList
# append to result if add_to_data: result.append(x.getPersonProperty('Titel') + " " + \ x.getPersonProperty('Nachname') + " | " + x.getId() )
Das Script sammelt alle Dozenten aus dem professoren-Verzeichnis ein und merkt sich ihren Titel, Nachnamen und ID. Die ID wird mit einem senkrechten Strich vom Namen abgetrennt, damit man daraus später in einem anderen Script den Link generieren kann.
Die beiden folgende Python-Scripte zerlegen den String in den Namens- bzw. Link-Teil. Sie können direkt von einem Page Template aufgerufen werden.
Hier wird der Name des Dozenten extrahiert:
Python-Script: /fha/informatik/vorlesungen/getDozentName
# get my_data my_data = context.objectValues() # create empty result result="" for y in my_data: # is A_vorlesungsdaten available? if y.getId() == "A_vorlesungsdaten": temp = y.getProperty('Dozent') limiter = temp.find('|') result = temp[0:limiter-1] return result
Dieses Script extrahiert die ID und gibt den kompletten Link zurück:
Python-Script: /fha/informatik/vorlesungen/getDozentLink
# get my_data my_data = context.objectValues() # create empty result result="" for y in my_data: # is A_vorlesungsdaten available? if y.getId() == "A_vorlesungsdaten": temp = y.getProperty('Dozent') limiter = temp.find('|') result = "../../professoren/" + temp[limiter+2:] + "/prof_view" return result