--- MPIWGWeb/Attic/MPIWGRoot.py 2008/06/24 11:16:27 1.1.2.1
+++ MPIWGWeb/Attic/MPIWGRoot.py 2008/08/29 07:31:05 1.1.2.7
@@ -30,16 +30,33 @@ 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'
@@ -56,7 +73,7 @@ class MPIWGRoot(ZSQLExtendFolder):
proj.responsibleScientistsList=[]
for person in persons.items():
- logging.info("XXXX"+repr(person))
+
if len(person[1]) >1: #nicht eindeutig
ret+="nicht eindeutig --- %s: %s\n"%(proj.getId(),person[0])
@@ -87,6 +104,7 @@ class MPIWGRoot(ZSQLExtendFolder):
def decode(self,str):
"""decoder"""
+
if not str:
return ""
if type(str) is StringType:
@@ -263,21 +281,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,7 +320,7 @@ 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 ""
@@ -483,18 +493,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 +524,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 +861,25 @@ 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()
+ if hasattr(obj[3],'publicationList'):
+ 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 +1008,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!+++++++++++++++++++++++++++++++++")
@@ -1035,76 +1076,7 @@ class MPIWGRoot(ZSQLExtendFolder):
-# def getMembersFromList(self,list):
-# """get member names from person full text list"""
-# memberlist=[]
-# persons=list.split(";")
-# for person in persons:
-# if len(person)>1: #nicht nur Trennzeichen
-# splitted=person.split(",")
-# if len(splitted)==1:
-# splitted=person.lstrip().rstrip().split(" ")
-# splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]
-# if splittedNew[0]=='':
-# del splittedNew[0]
-# search=string.join(splittedNew,' AND ')
-#
-# if not search=='':
-# try:
-#
-# member=self.MembersCatalog({'title':search})
-#
-# except:
-# member=None
-# if member:
-# logging.error("search publ %s:"%member[0].getObject().isPublished())
-# if member and (member[0].getObject().isPublished()):
-# if person =="Otto Sibum" : person="H. Otto Sibum"
-# if person =="Norton Wise" : person="M. Norton Wise"
-#
-# #memberlist.append("%s"%(member[0].absolute_url,person.encode('utf-8')))
-# memberlist.append((person, member[0].getObject().getId()))
-# else:
-# #memberlist.append("%s"%person.encode('utf-8'))
-# memberlist.append((person,None))
-# return memberlist
-
-# def getUrlFromPerson(self,list):
-# """get urls to person list"""
-# ret=[]
-# persons=list.split(";")
-# for person in persons:
-#
-# if len(person)>1: #nicht nur Trennzeichen
-# splitted=person.split(",")
-# if len(splitted)==1:
-# splitted=person.lstrip().rstrip().split(" ")
-# splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]
-# if splittedNew[0]=='':
-# del splittedNew[0]
-# search=string.join(splittedNew,' AND ')
-#
-# if not search=='':
-#
-# try:
-# proj=self.MembersCatalog({'title':search})
-# except:
-# proj=None
-#
-# if proj and (proj[0].getObject().isPublished()):
-# if person =="Otto Sibum" : person="H. Otto Sibum"
-# if person =="Norton Wise" : person="M. Norton Wise"
-# #ret.append("%s"%(proj[0].absolute_url,person.encode('utf-8')))
-# if self.MPIWGrootURL().split("/")[-1]=='en':
-# tmpPath="/en/staff/members/"
-# else:
-# tmpPath="/de/mitarbeiter/members/"
-# ret.append("%s"%(tmpPath+proj[0].getObject().getId()+"/index.html",person))
-# else:
-# #ret.append("%s"%person.encode('utf-8'))
-# ret.append("%s"%person)
-# return string.join(ret,";")
-#
+
def getProjectsOfMembers(self,date=None):
"""give tuple member /projects"""
ret=[]