# HG changeset patch # User dwinter # Date 1326887503 -3600 # Node ID f9a65eaaa59c1266391e1a9d5c3ab84781dc2660 # Parent a85d5f1115923725b119e357b36a636fc529bdd5 bug beim L?schen von objekte im Tagger fixed. Logger eingebaut um die Ver?nderungen beim Taggen festzuhalten, diff -r a85d5f111592 -r f9a65eaaa59c MPIWGThesaurus.py --- a/MPIWGThesaurus.py Fri Jan 13 10:58:05 2012 +0100 +++ b/MPIWGThesaurus.py Wed Jan 18 12:51:43 2012 +0100 @@ -78,14 +78,16 @@ virtuosoDAVPW="w3s45us3" virtuosoGraph="file://newpersonsFromProjects" + logpathDefault="/var/tmp/tagchanges.log" + #BTrees fuer die Tags projectPersons= OOBTree() #project --> personen IDs - projectObjects= OOBTree() + projectObjects= OOBTree() #project --> objects projectHistoricalPlaces= OOBTree() projectSuggestedTags= OOBTree() persons2Projects= OOBTree() #personenID --> projects - objects2Projects=OOBTree() + objects2Projects=OOBTree() #objects --> projects historicalPlaces2Projects=OOBTree() suggestedTags2Projects=OOBTree() personIDtoNames=OOBTree() # weist den personenIDs Klartextnamen aus dem Triplestore zu @@ -163,6 +165,7 @@ manage_options = Folder.manage_options+( {'label':'Thesaurus entries','action':'changeMPIWGThesaurusForm'}, {'label':'Manage Thesaurus','action':'manageMPIWGThesaurus'}, + {'label':'Thesaurus Log','action':'manageMPIWGThesaurusLogs'}, #{'label':'Change Publications Special','action':'changePublications_specialForm'}, ) @@ -189,6 +192,20 @@ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageMPIWGThesaurus.zpt')).__of__(self) return pt() + security.declareProtected('View management screens','manageMPIWGThesaurusLogs') + def manageMPIWGThesaurusLogs(self): + """form for changing the project""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageMPIWGThesaurusLog.zpt')).__of__(self) + return pt() + + def changeMPIWGThesaurusLog(self,logpath,RESPONSE=None): + """change log file path""" + self.logpath=logpath + + if RESPONSE is not None: + redirect(RESPONSE,'manage_main') + + security.declareProtected('View management screens','changeMPIWGThesaurus') def changeMPIWGThesaurus(self,approachesTxt,disciplinesTxt,periodsTxt,spacesTxt,technologiesTxt,knowledgeTransfersTxt,RESPONSE=None): """change it""" @@ -201,7 +218,47 @@ if RESPONSE is not None: redirect(RESPONSE,'manage_main') - + + + def getLogpath(self): + return getattr(self,"logpath",self.logpathDefault) + + def getLogfile(self,projectID="",date=""): + + # logfile format : YYYY-MM-TT HH:mm:ss\tUSER\ttype\tprojectid\CHANGED_TAG_or_OBJECT_or_PERSON + if not os.path.exists(self.getLogpath()): + return "" + + fh = open(self.getLogpath(),"r") + lines=fh.readlines() + + if (projectID!=""): + ret=[] + for line in lines: + splitted=line.split("\t") + if splitted[3]==projectID: + ret.append(line) + + lines=ret[0:] + + if (date!=""): + ret=[] + for line in lines: + splitted=line.split("\t") + if splitted[0]>=date: + ret.append(line) + + + lines=ret[0:] + + txt= "".join(lines) + fh.close() + + + + + return txt + #In der Anzeige soll der Name der zitierten Personen in Klartext angezeigt werden, ausserdem die Varianten, wie sie tatsaechlich #in den Projekten benutzt werden @@ -450,21 +507,23 @@ for tag in tagsStored.keys(): #gehe durch alle gespeichteren tags logging.debug("checking:"+tag) - currentApproach = tagsStored.get(tag,None) - logging.debug(currentApproach) - if currentApproach is None: - currentApproach=OOSet() + projectsOfTag = tagsStored.get(tag,None) + logging.debug(projectsOfTag) + if projectsOfTag is None: + projectsOfTag=OOSet() if tag in tagList: #dieser ist getagged - currentApproach.update([projectID]); + projectsOfTag.update([projectID]); + self.storeChange("added",projectID,tag) tagList.remove(tag); else: - if currentApproach.has_key(projectID): - currentApproach.remove(projectID); - - tagsStored.update({tag:currentApproach}); + if projectsOfTag.has_key(projectID): + projectsOfTag.remove(projectID); + self.storeChange("remove",projectID,tag) + + tagsStored.update({tag:projectsOfTag}); - for tag in tagList: # alle die nich nicht abearbeitet worden muessen noch angelegt werden + for tag in tagList: # alle Tags, die nicht abgearbeitet worden sind, muessen noch angelegt werden logging.debug("adding:"+tag) newApproach=OOSet() newApproach.update([projectID]); @@ -477,14 +536,14 @@ def getTitle(self,entry): return entry.title - def getEntriesFormatted(self,entries,type): + def getEntriesFormatted(self,entries,formatType): errorString="