changeset 17:8e2ddcef1e8d

overviews
author dwinter
date Fri, 27 Jan 2012 14:48:02 +0100
parents c8f78f50e097
children 8cbb34593ca9
files .pydevproject MPIWGThesaurus.py zpt/manageMPIWGThesaurus.zpt
diffstat 3 files changed, 104 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/.pydevproject	Wed Jan 18 19:54:03 2012 +0100
+++ b/.pydevproject	Fri Jan 27 14:48:02 2012 +0100
@@ -2,7 +2,7 @@
 <?eclipse-pydev version="1.0"?>
 
 <pydev_project>
-<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python2.4</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python2.4 - zope</pydev_property>
 <pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.4</pydev_property>
 <pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
 <path>/MPIWGThesaurus</path>
--- a/MPIWGThesaurus.py	Wed Jan 18 19:54:03 2012 +0100
+++ b/MPIWGThesaurus.py	Fri Jan 27 14:48:02 2012 +0100
@@ -26,7 +26,21 @@
 import random
 import urllib2
 import urllib
+from Ft.Lib.DistExt.ImageHlp import Array
+from aetypes import IsType
 
+
+class projectHolder:
+            projectHolder=""
+            projectName=""
+            projectID=""
+            persons=""
+            tags={}
+            
+            def __init__(self,ID):
+                self.projectID=ID
+                self.tags={}
+                
 #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"""
@@ -220,6 +234,83 @@
             redirect(RESPONSE,'manage_main')
     
     
+    def getProjectsAndTags(self):
+        """projekte und tags"""
+       
+        
+        projectTags={}
+        for tag in self.tags.keys():
+            logging.debug("getProjectsAndTags:"+tag)
+               # <div class="level1_projects" tal:repeat="proj
+               #              python:here.getProjectsWithTag('approaches',here.getTitle(level1))"><a tal:attributes="href
+               #                                                         python:proj[0]"><span  tal:content="python:proj[1]">my proj</span><tal:x define="person python:proj[2]"><span
+               #                                                                                                          class="person_projects" tal:content="person"/></tal:x></a></div>
+          #</div>
+            
+            for subTag in self.tags.get(tag):
+                projs = self.getProjectsWithTag(tag,subTag)
+                if not isinstance(projs, ListType):
+                    projs=[projs]
+                
+                for proj in projs:
+                    
+                    projectID=proj[0]
+                    logging.debug("PTS"+repr(projectTags))
+                    project=projectTags.get(projectID,projectHolder(projectID))
+                    project.projectName=proj[1]
+                    project.persons=proj[2]
+                    logging.debug(project)
+                    logging.debug(tag)
+                    logging.debug("PROTS"+repr(project.tags))
+                    tagsOfType=project.tags.get(tag,OOSet())
+                    logging.debug(tagsOfType)
+                    tagsOfType.add(subTag.decode('utf-8'))
+                                  
+                    logging.debug("Adding %s to %s"%(subTag,projectID))
+                    project.tags[tag]=tagsOfType
+                    
+                    projectTags[projectID]=project
+                    logging.debug("Saved %s to %s"%(repr(list(tagsOfType)),projectID))
+        logging.debug(projectTags)
+        
+        
+        
+        return projectTags
+    
+    def getProjectsAndTagsTSV(self):
+        """get the projects as tab"""
+        ret=""
+        
+        #genereate headers
+        headers=['date','projectPath','projectName','researchers resp']
+        headers.extend(list(self.tags.keys()))
+        ret+="\t".join(headers)+"\n"
+        
+        projectTags = self.getProjectsAndTags()
+        for projectID in projectTags.keys():
+            retarray=[]
+            splitted = projectID.split("/") # hiern nur die eingetliche ID ohne den Pfad
+            if len(splitted)>0:
+                projectIDShort=splitted[-1]
+                retarray.append(self.lastChangeInThesaurus.get(projectIDShort,''))
+            else:
+                retarray.append('')
+            retarray.append(projectID)
+            project = projectTags.get(projectID)
+            retarray.append(project.projectName)
+            retarray.append(project.persons)
+            
+            
+            
+            for tagType in self.tags.keys():
+                tags = project.tags.get(tagType,[''])
+                retarray.append(";".join(tags))
+            
+            
+            ret+="\t".join(retarray)+"\n"
+                
+        return ret
+    
     def getLogpath(self):
         return getattr(self,"logpath",self.logpathDefault) 
     
@@ -546,6 +637,7 @@
         return self.levelFormatted(level1_entries=entries,type=formatType)
         
     def getEntries(self,entry):
+        logging.debug("GETENTRY:"+repr(entry))
         return entry.entries
     
     #nimmt ein eine Text der Form 
@@ -1448,6 +1540,10 @@
         
         from time import gmtime,strftime
       
+      
+              
+       
+        
         
         fl = open(self.getLogpath(),"a")
         person = self.REQUEST.AUTHENTICATED_USER.getId()
@@ -1457,6 +1553,10 @@
         fl.flush()
         fl.close()
         
+        lastChangeInThesaurus = getattr(self,'lastChangeInThesaurus',OOBTree())
+        lastChangeInThesaurus.update({projectID:date})
+        self.lastChangeInThesaurus=lastChangeInThesaurus
+        
 def redirect(RESPONSE,url):
         """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen"""
         
--- a/zpt/manageMPIWGThesaurus.zpt	Wed Jan 18 19:54:03 2012 +0100
+++ b/zpt/manageMPIWGThesaurus.zpt	Fri Jan 27 14:48:02 2012 +0100
@@ -7,6 +7,9 @@
 <li><a href="getPersonsWithProjectIDs?check=bool:True">Hole all Personen mit ProjectIDs, raeumt zu gleich den Cache Persone-->ProjectID auf</a></li>
 <li><a href="rearangePersonIDsHTML">Ordne neue IDs vorhandenen Personen zu, insbesondere ersetze temporaere IDs durch GND oder andere,</a></li>
 <li><a href="getUnifyPersonsList">Ordne GND ids zu, falls bisher IDs aus anderen Kontexten vergeben wurden.</a></li>
+
+<h3>Overview</h3>
+<li><a href="getProjectsAndTagsTSV">Uebersicht ueber alle vergebenenen Tags (TAB-getrennte Liste) </a></li>
 </ul>
 </body>
 </html>
\ No newline at end of file