changeset 1:95e1e37915c6

thesaurus manager added
author dwinter
date Thu, 30 Jun 2011 09:51:06 +0200
parents b2e4605f20b2
children 03c4e248b9e2
files MPIWGThesaurus.py zpt/manageMPIWGThesaurus.zpt
diffstat 2 files changed, 53 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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");
--- /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 @@
+<html>
+<body>
+<h2>Manage the thesaurus</h2>
+<ul>
+<li><a href="listAllSuggestedTags">Zeige alle vorgeschlagenen Tags</a></li>
+</ul>
+</body>
+</html>
\ No newline at end of file