# HG changeset patch # User dwinter # Date 1309420266 -7200 # Node ID 95e1e37915c60519b07d3f72c651092cab38a4cc # Parent b2e4605f20b263f812adb5bf9768954cfdc2d6bf thesaurus manager added diff -r b2e4605f20b2 -r 95e1e37915c6 MPIWGThesaurus.py --- a/MPIWGThesaurus.py Thu Jun 30 09:07:49 2011 +0200 +++ b/MPIWGThesaurus.py Thu Jun 30 09:51:06 2011 +0200 @@ -1,4 +1,14 @@ +#Klasse zum Taggen und Anzeigen der Tags von Projekte bzw. allgemein Webseiten des Institutes +#Tags werden in der Instanz abgespeichert +#Personenname kommen aus dem Virtuoso-Triplestore , lokal erzeugte zusaetliche Name werden dort abgespeichert +#Fuer die Suche über die Personenname wird das MetaDataManagerRestlet benoetigt. +#TODO: Zur Zeit werden die entsprechenden Server URLs hier in der Klasse definiert. + + # TODO: generell verwaltung der tags im triple store und nicht in zope. +# TODO: mache server und namespaces konfigurierbar im project + + from OFS.Folder import Folder from Globals import package_home from Products.PageTemplates.PageTemplateFile import PageTemplateFile @@ -16,8 +26,13 @@ import urllib2 import urllib +#Entry beschreibt jeweils einen Tag mit dem Namen "title", entries enthaelt eine Liste von Subtags (der Klasse Entry), die diesem Tag untergeordnet sind. class Entry: """publicClass""" + + #=========================================================================== + # __init__ + #=========================================================================== def __init__(self,title,entries=[]): self.title=title self.entries=entries @@ -26,6 +41,7 @@ """getTitle""" return self.title +#Beschriebt einen von einem Benutzer vorgeschlagenen Tag class SuggestedTag: """publicClass""" type="" @@ -54,6 +70,8 @@ virtuosoDAVPW="w3s45us3" virtuosoGraph="file://newpersonsFromProjects" + #BTrees fuer die Tags + projectPersons= OOBTree() projectObjects= OOBTree() projectHistoricalPlaces= OOBTree() @@ -66,6 +84,8 @@ suggestedPersons= OOBTree(); #TODO: das sollte die ueberfluessig werde und nur im triple store stehen. tagList=[] + + #default liste fuer tags, wird ueber das Managementinterface ueberschrieben approachesTxt="""A --- ent1 @@ -130,7 +150,8 @@ manage_options = Folder.manage_options+( - {'label':'Main Config','action':'changeMPIWGThesaurusForm'}, + {'label':'Thesaurus entries','action':'changeMPIWGThesaurusForm'}, + {'label':'Manage Thesaurus','action':'manageMPIWGThesaurus'}, #{'label':'Change Publications Special','action':'changePublications_specialForm'}, ) @@ -141,15 +162,7 @@ def index_html(self): """index file""" - -# if hasattr(self,"storedProjectPersons"): -# self.projectPersons= getattr(self,"storedProjectPersons"); -# -# if hasattr(self,"storedProjectObjects"): -# self.projectPersons= getattr(self,"storedProjectObjects"); -# -# - + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index.html')).__of__(self) return pt() @@ -159,6 +172,12 @@ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeMPIWGThesaurusForm.zpt')).__of__(self) return pt() + def manageMPIWGThesaurus(self): + """form for changing the project""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageMPIWGThesaurus.zpt')).__of__(self) + return pt() + + def changeMPIWGThesaurus(self,approachesTxt,disciplinesTxt,periodsTxt,spacesTxt,technologiesTxt,knowledgeTransfersTxt,RESPONSE=None): """change it""" self.approachesTxt=approachesTxt @@ -174,7 +193,7 @@ #In der Anzeige soll der Name der zitierten Personen in Klartext angezeigt werden, ausserdem die Varianten, wie sie tatsaechlich #in den Projekten benutzt werden def collectPersonNamesToIds(self): - """finde Namen zu den personen ids""" + """Ordne Namen aus dem Triplestore bzw. die vergebenenden Label den Personen-Ids zu.""" self.personIDtoNames=OOBTree() # loessche alle for personID in self.persons2Projects: @@ -202,6 +221,7 @@ self.personIDtoNames=self.personIDtoNames # make clear that it has changed #TODO: change this to variablen with names _p + #Hole die Namen, die einer personID zugeordnet sind. def getNamesFromID(self,personID): retStr="" retStr+=self.personIDtoNames.get(personID)[0] # hole die Hauptbezeichnung @@ -211,6 +231,7 @@ return retStr + #Hole die Hauptnamemsansetzung aus dem Triplestore ),falls vorhanden, wenn nicht ist der String leer. def getMainNameFromTripleStore(self,personID): @@ -242,6 +263,7 @@ return names[1].replace('"','') # wir nehmen nur den ersten treffer + def changeTags(self,projectID,approaches=[],disciplines=[],periods=[],spaces=[],technologies=[],transfers=[],RESPONSE=None): """change tags""" self.changeTagFromList(projectID,"approaches", approaches) @@ -331,6 +353,18 @@ def getEntries(self,entry): return entry.entries + #nimmt ein eine Text der Form + # TAG1 + # --- + # SUBTAG1_1 + # SUBTAG1_2 + # --- + # TAG2 + # --- + # SUBTAG2_1 + # SUBTAG2_2 + #.... + # und erzeugt daraus eine entsprechende Liste von Entries def getEntriesFromTxt(self,txt): apps=[] lines=txt.split("\n"); diff -r b2e4605f20b2 -r 95e1e37915c6 zpt/manageMPIWGThesaurus.zpt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/manageMPIWGThesaurus.zpt Thu Jun 30 09:51:06 2011 +0200 @@ -0,0 +1,8 @@ + +
+