--- MPIWGWeb/MPIWGProjects.py 2005/10/11 13:14:01 1.47.2.27 +++ MPIWGWeb/MPIWGProjects.py 2005/10/12 19:35:38 1.47.2.28 @@ -2,6 +2,8 @@ for organizing and maintaining the different project pages """ +#TODO: mechanismus fur links to personen ueberarbeiten, da jetzt alle e_mails als members auftauchen unabhaengig vom status publish_the_data + from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate @@ -23,12 +25,21 @@ from Products.ZSQLMethods.SQL import SQL from AccessControl import ClassSecurityInfo from bibliography import * import time +import xml.dom.minidom +import sys definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub'] checkFields = ['xdata_01'] +def getTextFromNode(nodename): + nodelist=nodename.childNodes + rc = "" + for node in nodelist: + if node.nodeType == node.TEXT_NODE: + rc = rc + node.data + return rc def sortF(x,y): try: @@ -269,6 +280,25 @@ class MPIWGRoot(ZSQLExtendFolder): txt="""

Auf dieser Seite finden Sie die Projekte mit Stand vom %s

"""%str(date) return "" + + def createOrUpdateId_raw(self): + """create sequence to create ids for bibliography""" + debug=None + #suche groesste existierende id + founds=self.ZSQLQuery("select id from bibliography") + + if founds: + ids=[int(x.id[1:]) for x in founds] + maximum=max(ids) + + id_raw=self.ZSQLQuery("select nextval('id_raw_test')",debug=debug) + + if id_raw: + self.ZSQLQuery("drop sequence id_raw_test",debug=debug) + + self.ZSQLQuery("create sequence id_raw_test start %i"%(maximum+1),debug=debug) + + def queryLink(self,link): """append querystring to the link""" return "%s?%s"%(link,self.REQUEST.get('QUERY_STRING','')) @@ -709,7 +739,7 @@ class MPIWGRoot(ZSQLExtendFolder): founds = self.ZSQLInlineSearch(_table="publications") for found in founds: - print found + if found.id_institutsbibliographie and (not found.id_institutsbibliographie ==""): entries = self.ZSQLInlineSearch(_table="institutsbiblio",id=found.id_institutsbibliographie) for entry in entries: @@ -722,7 +752,74 @@ class MPIWGRoot(ZSQLExtendFolder): return True - + def updateHomepage_neu(self,RESPONSE=None): + """ update""" + RESPONSE.write("\n") + url="http://itgroup.mpiwg-berlin.mpg.de:8050/FMPro?-db=personal-www&-format=-dso_xml&-lay=sql_export&-max=10000&-findall" + fh=urllib.urlopen(url) + dom=xml.dom.minidom.parse(fh) + + + memberFolder=getattr(self,'members') + members=memberFolder.ZopeFind(memberFolder,obj_metatypes=["MPIWGStaff"]) + + memberList=[x[0] for x in members] + + for row in dom.getElementsByTagName('ROW'): + username=getTextFromNode(row.getElementsByTagName('username')[0]) + id=getTextFromNode(row.getElementsByTagName('ID')[0]) + name=getTextFromNode(row.getElementsByTagName('Name')[0]) + vorname=getTextFromNode(row.getElementsByTagName('Vorname')[0]) + title=getTextFromNode(row.getElementsByTagName('Title')[0]) + e_mail=getTextFromNode(row.getElementsByTagName('e_mail')[0]) + e_mail_p=getTextFromNode(row.getElementsByTagName('e_mail_p')[0]) + date_from=getTextFromNode(row.getElementsByTagName('Date_from')[0]) + date_to=getTextFromNode(row.getElementsByTagName('Date_to')[0]) + abteilung=getTextFromNode(row.getElementsByTagName('Abteilung')[0]) + heimat_inst=getTextFromNode(row.getElementsByTagName('heimat_inst')[0]) + funded_by=getTextFromNode(row.getElementsByTagName('funded_by')[0]) + e_mail2=getTextFromNode(row.getElementsByTagName('e_mail2')[0]) + publish_the_data=getTextFromNode(row.getElementsByTagName('publish_the_data')[0]) + + cwNode=row.getElementsByTagName('current_work.current')[0] + cw=cwNode.getElementsByTagName('DATA') + if cw: + txt=getTextFromNode(cw[0]) + else: + txt="" + + cwNode=row.getElementsByTagName('current_work.publish')[0] + cw=cwNode.getElementsByTagName('DATA') + if cw: + txt_p=getTextFromNode(cw[0]) + else: + txt_p="" + + project=getattr(self,'members') + + if not (username in memberList):#neuer eintrag + try: + newObj=MPIWGStaff.MPIWGStaff(str(username),name,vorname) + memberFolder._setObject(str(username),newObj) + RESPONSE.write("

new:%s

\n"%username.encode('utf-8')) + obj=getattr(memberFolder,username) + obj.createNewDBEntry(publish_the_data,id,name, + vorname,title,e_mail, + e_mail_p,date_from,date_to, + abteilung,heimat_inst,funded_by, + e_mail2,txt,txt_p) + except: + RESPONSE.write("

ERROR:%s %s %s

\n"%(username.encode('utf-8'),name.encode('utf-8'),vorname.encode('utf-8'))) + RESPONSE.write("

: %s %s"%sys.exc_info()[:2]) + else: + RESPONSE.write("

update:%s

\n"%username.encode('utf-8')) + self.ZSQLChange(_table="personal_www",_identify="id=%s"%id,publish_the_data=publish_the_data, + date_from=date_from, + date_to=date_to) + + + + return True def updateHomepages(self,RESPONSE): """lege members an""" @@ -1144,9 +1241,6 @@ class MPIWGRoot(ZSQLExtendFolder): return (fieldname in checkFields) - - - def manage_addMPIWGRootForm(self): """form for adding the root"""