diff MPIWGThesaurus.py @ 41:9a23640f7f49

added getAllProjectsAndTagsAsCSV.
author casties
date Wed, 30 Oct 2013 17:43:03 +0100
parents 4342a81e0aa0
children b1f5d42bb93b
line wrap: on
line diff
--- a/MPIWGThesaurus.py	Wed Oct 30 10:18:08 2013 +0100
+++ b/MPIWGThesaurus.py	Wed Oct 30 17:43:03 2013 +0100
@@ -17,6 +17,7 @@
 from AccessControl import ClassSecurityInfo
 
 #import os
+import re
 import os.path
 import logging
 import time
@@ -27,7 +28,7 @@
 import urllib2
 import urllib
 
-
+from SrvTxtUtils import utf8ify
 
 class projectHolder:
             projectHolder=""
@@ -318,17 +319,52 @@
             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 getAllProjectsAndTagsAsCSV(self,archived=1,RESPONSE=None):
+        """alle projekte auch die nicht getaggten"""
+        retList=[]
+        headers=['projectId','sortingNumber','projectName','scholars','startedAt','completedAt','lastChangeThesaurusAt','lastChangeProjectAt','projectCreatedAt','persons','objects']
+        headers.extend(list(self.tags.keys()))
+        retList.append("\t".join(headers))
+        
+        projectTags = self.getProjectsAndTags()
+        projects = self.getMPIWGRoot().getProjectFolder().getProjectsAsList(archived=archived)
+        for proj in projects:
+            p_name = proj.getLabel()
+            retProj=[]
+            #if (not proj.isArchivedProject() and archived==1) or (proj.isArchivedProject() and archived==2):
+            retProj.append(utf8ify(proj.getId()))
+            retProj.append(utf8ify(proj.getContent('xdata_05')))
+            retProj.append(utf8ify(p_name))  
+            retProj.append(utf8ify(proj.getContent('xdata_01')))
+            retProj.append(utf8ify(proj.getStartedAt()))
+            retProj.append(utf8ify(proj.getCompletedAt()))
+            changeDate=self.lastChangeInThesaurus.get(proj.getId(),'') 
+            n = re.sub("[:\- ]","",str(changeDate))
+            retProj.append(n)
+            retProj.append(utf8ify(getattr(proj,'creationTime','20050101000000')))  
+            retProj.append("")#TODO: project created at   
+            retProj.append(";".join([person[1] for person in self.getPersonsFromProject(proj.getId())]))
+            #retProj.append(";".join([person[1] for person in self.thesaurus.getHistoricalPlacesFromProject(proj.getId())]))
+            retProj.append(";".join([person[1] for person in self.getObjectsFromProject(proj.getId())]))
+            retProj+=self.getTags(proj.getId(),projectTags)
+            retList.append("\t".join(retProj))
+        
+        if RESPONSE:            
+            RESPONSE.setHeader('Content-Disposition','attachment; filename="ProjectsAndTags.tsv"')
+            RESPONSE.setHeader('Content-Type', "application/octet-stream")
+      
+        return "\n".join(retList);
+    
+
     def getLogpath(self):
         return getattr(self,"logpath",self.logpathDefault) 
     
@@ -803,7 +839,7 @@
         retarray=[]    
         for tagType in self.tags.keys():
                 tags = project.tags.get(tagType,[''])
-                retarray.append(self.utf8ify(";".join(tags)))
+                retarray.append(utf8ify(";".join(tags)))
             
             
         return retarray       
@@ -1529,8 +1565,6 @@
         if tags is None:
             logging.debug("can't find Tags")
             return []
-            
-        
     
         tagsStored=tags.get(tagType,None)
         if tagsStored is None:
@@ -1552,7 +1586,8 @@
         return ret
     
     def getProjectDetails(self,projectId):
-        project=getattr(self.projects,projectId,None)
+        pf = self.getMPIWGRoot().getProjectFolder()
+        project=pf.get(projectId,None)
         if project is None:
             logging.debug("no project!! " +projectId)
             return None
@@ -1652,7 +1687,6 @@
             return
         
         opener2 = urllib2.build_opener()
-        
        
         personIDencoded=urllib.quote(personURI,safe="")
         graphEncoded=urllib.quote(self.additionalNamesGraphURL,safe="")
@@ -1667,8 +1701,6 @@
             logging.error(e.code)
             logging.error(e.read())
             return
-        
-                    
        
         return
     
@@ -1676,12 +1708,6 @@
     def storeChange(self,typeString,projectID,value):
         
         from time import gmtime,strftime
-      
-      
-              
-       
-        
-        
         fl = open(self.getLogpath(),"a")
         person = self.REQUEST.AUTHENTICATED_USER.getId()
         date = strftime("%Y-%m-%d %H:%M:%S", gmtime())