--- 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"""