--- MPIWGWeb/Attic/MPIWGRoot.py 2008/06/25 06:41:25 1.1.2.2 +++ MPIWGWeb/Attic/MPIWGRoot.py 2008/09/02 12:00:06 1.1.2.10 @@ -30,20 +30,48 @@ import updatePersonalWWW import MPIWGStaff from MPIWGHelper import * + +def sortWeight(x,y): + x1=int(getattr(x[1],'weight','0')) + y1=int(getattr(y[1],'weight','0')) + return cmp(x1,y1) + + class MPIWGRoot(ZSQLExtendFolder): """Stammordner fuer den Web-Server""" - fieldLabels={'WEB_title':'WEB_Title','xdata_01':'Responsible Scientists','xdata_02':'Department', - 'xdata_03':'Historical Persons','xdata_04':'Time period', - 'xdata_05':'Sorting number','xdata_06':'Keywords','xdata_07':'Short title', - 'xdata_08':'Other involved scholars' ,'xdata_09':'Disciplines','xdata_10':'Themes', - 'xdata_11':'Object Digitallibrary','xdata_12':'Cooperation partners', - 'xdata_13':'Funding institutions','WEB_project_header':'WEB_project_header', - 'WEB_project_description':'WEB_project_description','WEB_related_pub':'WEB_related_pub'} + fieldLabels={'WEB_title':'WEB_Title', + 'xdata_01':'Responsible Scientists', + 'xdata_02':'Department', + 'xdata_03':'Historical Persons', + 'xdata_04':'Time period', + 'xdata_05':'Sorting number', + 'xdata_06':'Keywords', + 'xdata_07':'Short title', + 'xdata_08':'Other involved scholars' , + 'xdata_09':'Disciplines', + 'xdata_10':'Themes', + 'xdata_11':'Object Digitallibrary', + 'xdata_12':'Cooperation partners', + 'xdata_13':'Funding institutions', + 'WEB_project_header':'WEB_project_header', + 'WEB_project_description':'WEB_project_description', + 'WEB_related_pub':'WEB_related_pub'} folders=['MPIWGProject','Folder','ECHO_Navigation'] meta_type='MPIWGRoot' + def copyAllImagesToMargin(self): + """tranformiere alle Bilder in die Margins""" + projects=self.getTree() + ret="" + for project in projects: + proj=project[3] + try: + persons=proj.copyImageToMargin(); + except: + logging.error("Cannnot do: %s"%repr(project)) + def transformProjectsToId(self): """trnasformiere zu ID, Hilfsfunktion die die alten Templates analysiert und mit der neuen Liste verantwortlicher Personen versieht""" @@ -67,6 +95,7 @@ class MPIWGRoot(ZSQLExtendFolder): proj.responsibleScientistsList.append((person[0],person[1][0].getObject().getKey())) return ret + def harvestProjects(self): """harvest""" @@ -87,6 +116,7 @@ class MPIWGRoot(ZSQLExtendFolder): def decode(self,str): """decoder""" + if not str: return "" if type(str) is StringType: @@ -263,21 +293,13 @@ class MPIWGRoot(ZSQLExtendFolder): return True return False - def getSection(self): - """returns the current section name""" - root = self.absolute_url() - url = self.REQUEST['URL'] - if not url: - return None - path = string.replace(url, root, '') - paths = path.split('/') - if len(paths) > 0: - sec = paths[1] - if sec.find('.') < 0: - return sec - else: - return None - return None + + def getSections(self): + """returns a list of all sections i.e. top-level MPIWGFolders""" + secs = self.objectItems(['MPIWGFolder']) + secs.sort(sortWeight) + #logging.debug("root: %s secs: %s"%(repr(self.absolute_url()), repr(secs))) + return secs def getSectionStyle(self, name, style=""): """returns a string with the given style + '-sel' if the current section == name""" @@ -310,13 +332,14 @@ class MPIWGRoot(ZSQLExtendFolder): def replaceNotEmpty(self,format,field): """replace not empty""" if field and (not field.lstrip()==''): - return format%field + return self.decode(format%field) else: return "" def isActiveMember(self,key): """tested ob Mitarbeiter key ist aktiv""" + key=utf8ify(key) ret=self.getat(self.ZSQLInlineSearch(_table='personal_www', _op_key='eq',key=key, _op_publish_the_data='eq', @@ -483,18 +506,22 @@ class MPIWGRoot(ZSQLExtendFolder): RESPONSE.redirect('manage_main') - def getContexts(self,childs=None,parents=None,depth=None,date=None,onlyActive=True): """childs alle childs, alle parents""" ret=[] if parents: - splitted=parents.split(".") - parentId=string.join(splitted[0:len(splitted)-1],".") - - for project in self.getProjectFields('xdata_05',sort='int',date=date): - if project[1]==parentId: - ret.append(project) + pnums=parents.split(".") + while len(pnums) > 1: + pnums.pop() + parentId=string.join(pnums,".") + + for project in self.getProjectFields('xdata_05',sort='int',date=date): + if project[1]==parentId: + ret.append(project) + + if (depth is not None) and (len(ret) >= depth): + break if childs: for project in self.getProjectFields('xdata_05',sort='int',date=date): @@ -510,7 +537,10 @@ class MPIWGRoot(ZSQLExtendFolder): ret.append(project) else: ret.append(project) + + #logging.debug("getContexts: childs=%s parents=%s depth=%s => %s"%(childs,parents,depth,repr(ret))) return ret + def getProjectFields(self,fieldName,date=None,folder=None,sort=None): """getListofFieldNames""" @@ -844,6 +874,26 @@ class MPIWGRoot(ZSQLExtendFolder): else: return entry + def getTreeRSS(self,dep=None,date=None,onlyActive=1,onlyArchived=0): + """generateTree""" + rss=""" + + """ + + for obj in self.getTree(dep, date, onlyActive, onlyArchived): + linkStr="""http://wwwneu.mpiwg-berlin.mpg.de/en/research/projects/%s""" + rss+="""""" + rss+=linkStr%obj[3].getId() + rss+="""""" + if hasattr(obj[3],'publicationList'): + rss+="""""" + rss+=linkStr%(obj[3].getId()+"/publicationList"); + rss+="""""" + rss+=""" + """ + + + return rss def getTree(self,dep=None,date=None,onlyActive=0,onlyArchived=0): """generate Tree from project list @@ -972,6 +1022,11 @@ class MPIWGRoot(ZSQLExtendFolder): logging.info("Changed!Completed+++++++++++++++++++++++++++++++++") entryChanged = True + if not (fields[nr][3].getStartedAt()==fields[nr][3].transformDate(form[str(nr)+'_started'])): + fields[nr][3].setStartedAt(form[str(nr)+'_started']) + logging.info("Changed!Started+++++++++++++++++++++++++++++++++") + entryChanged = True + if entryChanged: logging.info("Changed!+++++++++++++++++++++++++++++++++") @@ -1027,6 +1082,7 @@ class MPIWGRoot(ZSQLExtendFolder): if key=="": return "" + key=utf8ify(key) catalogged=self.MembersCatalog({'getKey':key}) if len(catalogged)==0: return "" @@ -1074,6 +1130,7 @@ class MPIWGRoot(ZSQLExtendFolder): if proj: proj2=[] for x in proj: + #logging.error("proj:%s"%repr(x.getPath())) if (not getattr(x.getObject(),'invisible',None)) and (getattr(x.getObject(),'archiveTime','')==''): proj2.append(x) @@ -1085,7 +1142,7 @@ class MPIWGRoot(ZSQLExtendFolder): proj2.sort(sortP) projectListe=[] - + #logging.error("getprojectsofmember proj2: %s"%repr(proj2)) for proj in proj2: obj=proj.getObject() add=False @@ -1096,7 +1153,7 @@ class MPIWGRoot(ZSQLExtendFolder): if obj.isArchivedProject(): add=True else: #alle - add=True + add=True if onlyActive==1: #nur active projecte if obj.isActiveProject(): @@ -1113,7 +1170,7 @@ class MPIWGRoot(ZSQLExtendFolder): if add: projectListe.append(obj) - + #logging.error("getprojectsofmember projectliste: %s"%repr(projectListe)) return projectListe def givePersonList(self,name):