Mercurial > hg > MPIWGThesaurus
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())