Mercurial > hg > MPIWGWeb
diff MPIWGRoot.py @ 51:d456fe185649
more work on projects. more cleanup.
author | casties |
---|---|
date | Tue, 30 Apr 2013 12:49:26 +0200 |
parents | e30a4bd074db |
children | 1ed79b33200c |
line wrap: on
line diff
--- a/MPIWGRoot.py Mon Apr 29 20:34:17 2013 +0200 +++ b/MPIWGRoot.py Tue Apr 30 12:49:26 2013 +0200 @@ -121,23 +121,6 @@ return bt - def versionHeaderEN(self): - """version header text""" - - date= self.REQUEST.get('date',None) - if date: - txt="""<h2>This pages shows the project which existed at %s</h2>"""%str(date) - return txt - return "" - - def versionHeaderDE(self): - """version header text""" - date= self.REQUEST.get('date',None) - if date: - txt="""<h2>Auf dieser Seite finden Sie die Projekte mit Stand vom %s</h2>"""%str(date) - return "" - - def createOrUpdateId_raw(self): """create sequence to create ids for bibliography""" debug=None @@ -165,22 +148,6 @@ splitted=url.split("/") return splitted[4] - def generateUrlProject(self,url,project=None): - """erzeuge aus absoluter url, relative des Projektes""" - if project: - splitted=url.split("/") - length=len(splitted) - short=splitted[length-2:length] - - base=self.REQUEST['URL3']+"/"+"/".join(short) - - else: - findPart=url.find("/projects/") - base=self.REQUEST['URL1']+"/"+url[findPart:] - - - return base - def isNewCapital(self,text=None,reset=None): if text: @@ -406,34 +373,6 @@ """quote""" return urllib.unquote(str) - - - def getProjectsByFieldContent(self,fieldName,fieldContentsEntry, date=None): - """gib alle Projekte aus mit Value von field mit fieldName enthaelt ein Element der Liste fieldContents""" - def sort(x,y): - return cmp(x.WEB_title[0],y.WEB_title[0]) - - if type(fieldContentsEntry) is StringType: - fieldContentsTmp=[fieldContentsEntry] - else: - fieldContentsTmp=fieldContentsEntry - - fieldContents=[] - for x in fieldContentsTmp: - fieldContents.append(" AND ".join(x.split())) - projects=self.ProjectCatalog({fieldName:string.join(fieldContents,' AND')}) - #print projects - #ret=[x for x in projects] - ret=[] - for x in projects: - obj=x.getObject() - obj=obj.getActualVersion(date) - if obj and (not getattr(obj,'invisible',None)): - #if not (x in ret): - ret.append(x) - - ret.sort(sort) - return ret def changeMPIWGRootForm(self): """edit""" @@ -534,50 +473,6 @@ - - def getProjectFields(self,fieldName,date=None,folder=None,sort=None): - """getListofFieldNames""" - ret=[] - - objects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'],search_sub=0) - - - for object in objects: - obj=object[1] - obj=obj.getActualVersion(date) - if obj and (not getattr(obj,'invisible',None)): - if fieldName=="WEB_title_or_short": - - if len(obj.getContent('xdata_07'))<3: # hack weil z.Z. manchmal noch ein Trennzeichen ; oder , im Feld statt leer - fieldNameTmp="WEB_title" - else: - fieldNameTmp="xdata_07" - else: - fieldNameTmp=fieldName - - ret.append((obj,obj.getContent(fieldNameTmp))) - - - if sort=="int": - ret.sort(sortI) - elif sort=="stopWords": - - ret.sort(sortStopWords(self)) - - else: - ret.sort(sortF) - - return ret - - def showNewProjects(self): - projects=[] - for objs in self.getProjectFields('WEB_title_or_short'): # Get all Projets - if objs[0].xdata_05 and (objs[0].xdata_05[0] == ""): - - projects.append(objs) - - return projects - def updatePublicationDB(self,personId=None): """updates the publication db, i.e. copy year and type into the main table""" @@ -814,43 +709,6 @@ - def reindexCatalogs(self,RESPONSE=None): - """reindex members and project catalog""" - - - try: - - self.ProjectCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) - logger("MPIWG Root (reindexCatalog: projects)",logging.INFO,"DONE") - except: - logger("MPIWG Root (reindexCatalog: projects)",logging.WARNING," %s %s"%sys.exc_info()[:2]) - - try: - - self.MembersCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) - logger("MPIWG Root (reindexCatalog: members)",logging.INFO,"DONE") - except: - logger("MPIWG Root (reindexCatalog: members)",logging.WARNING," %s %s"%sys.exc_info()[:2]) - - -# -# try: -# -# self.fulltextProjectsMembers.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) -# logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.INFO,"DONE") -# except: -# logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.WARNING," %s %s"%sys.exc_info()[:2]) -# -# -# -# - - - if RESPONSE: - RESPONSE.redirect('manage_main') - - - def getAllMembers(self): #ret=[] @@ -900,171 +758,8 @@ rss+="""</channel> </rss>""" - return rss - def getTree(self,dep=None,date=None,onlyActive=0,onlyArchived=0): - """generate Tree from project list - als Liste, jeder Eintrag ist ein Tupel ,(Tiefe, ProjektNummer,ProjektObject - onlyActive = 0 : alle Projekte - onlyActive = 1 : nur active Projekte - onlyActive = 2: nur inactive Projekte - - onlyArchived=0: alle Projekte - onlyArchived= 1 : nur aktuelle Projekte - onlyArchived = 2: nur archivierte Projekte - - department fuer das Tree geholt werden soll - """ - logging.debug("MPIWGRoot.getTree()") - - returnListTmp=[] - returnList=[] - - for project in self.getProjectFields('xdata_05',sort="int",date=date): # get Projects sorted by xdata_05 - - for idNr in project[1].split(";"): # more than one number - if not idNr=="": - splittedId=idNr.split(".") - depth=len(splittedId) - nr=idNr - #title=project[0].WEB_title - title=[project[0].getContent('WEB_title')] - #print title - - if idNr[0]=="x": # kompatibilitaet mit alter Konvention, x vor der Nummer macht project inactive - project[0].setActiveFlag(False) - - if (not dep) or (splittedId[0]==dep): #falls dep gesetzt ist nur dieses hinzufuegen. - - if (onlyActive==0): - returnListTmp.append((depth,nr,title,project[0])) - elif (onlyActive==1) and project[0].isActiveProject(): #nur active projekte - returnListTmp.append((depth,nr,title,project[0])) - elif (onlyActive==2) and (not project[0].isActiveProject()): #nur active projekte - returnListTmp.append((depth,nr,title,project[0])) - - - #filter jetzt die Liste nach Archived oder nicht - for entry in returnListTmp: - if (onlyArchived==0): - returnList.append(entry) - elif (onlyArchived==1) and (not entry[3].isArchivedProject()): #nur active projekte - returnList.append(entry) - elif (onlyArchived==2) and (entry[3].isArchivedProject()): #nur active projekte - returnList.append(entry) - - - return returnList - - - - def changePosition(self,treeId,select,RESPONSE=None): - """Change Postion Entry""" - numbers=[] - - # Suche hoechste bisherige nummer - projects=self.getProjectFields('xdata_05') # get Projects sorted by xdata_05 - #print "pj",projects - for project in projects: #suche alle subtrees der treeId - #print treeId - - founds=re.match(treeId+"\.(.*)",project[1].split(";")[0]) - if founds: - #print "x",founds.group(0),len(founds.group(0).split(".")) - if len(founds.group(0).split("."))==len(treeId.split("."))+1: # nur ein punkt mehr, d.h. untere ebene - try: - numbers.append(int(founds.group(0).split(".")[len(founds.group(0).split("."))-1])) - except: - numbers.append(int(0)) - - try: - highest=max(numbers) - except: - highest=0 - projects=self.showNewProjects() - for i in self.makeList(select): - highest+=10 - projects[int(i)][0].xdata_05=treeId+"."+str(highest) - - - if RESPONSE is not None: - RESPONSE.redirect('showTree') - - def changeTree(self,RESPONSE=None): - """change the complete tree""" - form=self.REQUEST.form - hashList={} - onlyArchived=int(form.get("onlyArchived",0)) - onlyActive=int(form.get("onlyActive",0)) - dep=form.get("dep",None) - - fields=self.getTree(dep=dep,onlyArchived=onlyArchived,onlyActive=onlyActive) - - logging.info("GOT TREE!----------------------------------------------------") - for field in form.keys(): - - splitted=field.split('_') - if (len(splitted)>1) and (splitted[1]=="runningNumber"): #feld hat die Form Nummer_name und runnignNumber - - - nr=int(splitted[0]) # nummer des Datensatzes - currentEntry = fields[nr] - - if form.has_key(str(nr)+'_active'): # active flag is set - fields[nr][3].setActiveFlag(True) - else: - fields[nr][3].setActiveFlag(False) - - #nummer hat sich geaendert - - entryChanged = False; - - if isinstance(fields[nr][3].xdata_05,list): #for some reasons somtimes the content of the field is a list with one entry. - fields[nr][3].xdata_05=fields[nr][3].xdata_05[0] - - if not (fields[nr][3].xdata_05==form[str(nr)+'_number']): - logging.info("Changed!Number+++++++++++++++++++++++++++++++++") - logging.info(repr(fields[nr][3].xdata_05)+" ---> "+ repr(form[str(nr)+'_number'])) - fields[nr][3].xdata_05=form[str(nr)+'_number'] - entryChanged = True - - #completed har sich geaendert - - td = fields[nr][3].transformDate # hole die funktion zum transformieren des datums - - if not (td(fields[nr][3].getCompletedAt())==td(form[str(nr)+'_completed'])): - fields[nr][3].setCompletedAt(form[str(nr)+'_completed']) - logging.info(repr(td(fields[nr][3].getCompletedAt()))+" ---> "+ repr(td(form[str(nr)+'_completed']))) - logging.info("Changed!Completed+++++++++++++++++++++++++++++++++") - entryChanged = True - - if not (td(fields[nr][3].getStartedAt())==td(form[str(nr)+'_started'])): - fields[nr][3].setStartedAt(form[str(nr)+'_started']) - - logging.info(repr(td(fields[nr][3].getStartedAt()))+" ---> "+ repr(td(form[str(nr)+'_started']))) - logging.info("Changed!Started+++++++++++++++++++++++++++++++++") - entryChanged = True - - - if entryChanged: - logging.info("Changed!+++++++++++++++++++++++++++++++++") - fields[nr][3].copyObjectToArchive() - - - if RESPONSE is not None: - RESPONSE.redirect('showTree') - - def getProjectWithId(self,id): - fields=self.getProjectFields('xdata_05') - for field in fields: - if field[1]==id: - return field[0] - - return None - - - def getRelativeUrlFromPerson(self,list): """get urls to person list"""