|
|
| version 1.47.2.27, 2005/10/11 13:14:01 | version 1.47.2.42, 2005/11/22 17:58:27 |
|---|---|
| Line 2 | Line 2 |
| for organizing and maintaining the different project pages | 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 | |
| #TODO: was passiert wenn aenderungen von jochen im filemaker nicht mit den aenderungen im sql uebereinstimmen | |
| #TODO: in einzelnen projecte steht als pfad auf die bilder noch wwwneu statt www | |
| from Products.PageTemplates.PageTemplateFile import PageTemplateFile | from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
| from Products.PageTemplates.PageTemplate import PageTemplate | from Products.PageTemplates.PageTemplate import PageTemplate |
| from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate | from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
| Line 23 from Products.ZSQLMethods.SQL import SQL | Line 27 from Products.ZSQLMethods.SQL import SQL |
| from AccessControl import ClassSecurityInfo | from AccessControl import ClassSecurityInfo |
| from bibliography import * | from bibliography import * |
| import time | import time |
| import xml.dom.minidom | |
| import sys | |
| from Ft.Xml.XPath import Evaluate | |
| from Ft.Xml.XPath.Context import Context | |
| from Ft.Xml.Domlette import NonvalidatingReader,PrettyPrint, Print | |
| from Ft.Xml import EMPTY_NAMESPACE | |
| 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'] | 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'] | 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): | def sortF(x,y): |
| try: | try: |
| Line 269 class MPIWGRoot(ZSQLExtendFolder): | Line 286 class MPIWGRoot(ZSQLExtendFolder): |
| txt="""<h2>Auf dieser Seite finden Sie die Projekte mit Stand vom %s</h2>"""%str(date) | txt="""<h2>Auf dieser Seite finden Sie die Projekte mit Stand vom %s</h2>"""%str(date) |
| return "" | 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')",debug=debug) | |
| if id_raw: | |
| self.ZSQLQuery("drop sequence id_raw",debug=debug) | |
| self.ZSQLQuery("create sequence id_raw start %i"%(maximum+1),debug=debug) | |
| def queryLink(self,link): | def queryLink(self,link): |
| """append querystring to the link""" | """append querystring to the link""" |
| return "%s?%s"%(link,self.REQUEST.get('QUERY_STRING','')) | return "%s?%s"%(link,self.REQUEST.get('QUERY_STRING','')) |
| Line 501 class MPIWGRoot(ZSQLExtendFolder): | Line 537 class MPIWGRoot(ZSQLExtendFolder): |
| list[urllib.quote(personNormal)]=(personNormal,[project[1]]) | list[urllib.quote(personNormal)]=(personNormal,[project[1]]) |
| except: | except: |
| zLOG.LOG("MPIWG Web (harvestHistoricalPerson)",zLOG.ERROR,"cannot annalyize: %s"%repr(project)) | zLOG.LOG("MPIWG Web (harvestHistoricalPerson)",zLOG.ERROR,"cannot analyize: %s"%repr(project)) |
| return list | return list |
| Line 665 class MPIWGRoot(ZSQLExtendFolder): | Line 701 class MPIWGRoot(ZSQLExtendFolder): |
| manage_options = Folder.manage_options+( | manage_options = Folder.manage_options+( |
| {'label':'Update Personal Homepages','action':'updateHomepages'}, | {'label':'Update personal homepages','action':'updateHomepages'}, |
| {'label':'Reindex catalogs','action':'reindexCatalogs'}, | |
| {'label':'Main config','action':'changeMPIWGRootForm'}, | {'label':'Main config','action':'changeMPIWGRootForm'}, |
| {'label':'Edit Historical Persons','action':'editHistoricalPersonsForm'}, | #{'label':'Edit Historical Persons','action':'editHistoricalPersonsForm'}, |
| {'label':'Store Historical Persons','action':'storeHistoricalPersons'}, | #{'label':'Store Historical Persons','action':'storeHistoricalPersons'}, |
| ) | ) |
| def importNamesForm(self): | def importNamesForm(self): |
| Line 709 class MPIWGRoot(ZSQLExtendFolder): | Line 746 class MPIWGRoot(ZSQLExtendFolder): |
| founds = self.ZSQLInlineSearch(_table="publications") | founds = self.ZSQLInlineSearch(_table="publications") |
| for found in founds: | for found in founds: |
| print found | |
| if found.id_institutsbibliographie and (not found.id_institutsbibliographie ==""): | if found.id_institutsbibliographie and (not found.id_institutsbibliographie =="") and (not found.id_institutsbibliographie =="0"): |
| entries = self.ZSQLInlineSearch(_table="institutsbiblio",id=found.id_institutsbibliographie) | entries = self.ZSQLInlineSearch(_table="institutsbiblio",id=found.id_institutsbibliographie) |
| for entry in entries: | for entry in entries: |
| self.ZSQLChange(_table='publications',_identify='oid=%s' % found.oid,year=entry.year,referencetype=entry.reference_type) | self.ZSQLChange(_table='publications',_identify='oid=%s' % found.oid,year=entry.year,referencetype=entry.reference_type) |
| Line 722 class MPIWGRoot(ZSQLExtendFolder): | Line 760 class MPIWGRoot(ZSQLExtendFolder): |
| return True | return True |
| def updateHomepages(self,RESPONSE=None): | |
| """ update""" | |
| RESPONSE.setHeader('Content-type', 'text/html') | |
| RESPONSE.write("<html><body>\n") | |
| url="http://itgroup.mpiwg-berlin.mpg.de:8050/FMPro?-db=personal-www&-format=-dso_xml&-lay=sql_export&-max=20000&-findall" | |
| dom = NonvalidatingReader.parseUri(url) | |
| #fh=urllib.urlopen(url) | |
| #dom=xml.dom.minidom.parse(fh) | |
| RESPONSE.write("got_xml_File\n") | |
| memberFolder=getattr(self,'members') | |
| members=memberFolder.ZopeFind(memberFolder,obj_metatypes=["MPIWGStaff"]) | |
| memberList=[x[0] for x in members] | |
| #print dom | |
| #ctx=Context(dom,processorNss={EMPTY_NAMESPACE:'http://www.filemaker.com/fmpdsoresult'}) | |
| # Evaluate(u".//dn:ROW",contextNode=dom,explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'}) | |
| #print dom.xpath(u'.//dn:ROW',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'}) | |
| for row in dom.xpath(u'.//dn:ROW',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'}): | |
| username=getTextFromNode(row.xpath('./dn:username',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| id=getTextFromNode(row.xpath('./dn:ID',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| name=getTextFromNode(row.xpath('./dn:Name',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| vorname=getTextFromNode(row.xpath('./dn:Vorname',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| title=getTextFromNode(row.xpath('./dn:Title',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| position=getTextFromNode(row.xpath('./dn:Position',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| e_mail=getTextFromNode(row.xpath('./dn:e_mail',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| e_mail_p=getTextFromNode(row.xpath('./dn:e_mail_p',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| date_from=getTextFromNode(row.xpath('./dn:Date_from',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| date_to=getTextFromNode(row.xpath('./dn:Date_to',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| abteilung=getTextFromNode(row.xpath('./dn:Abteilung',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| heimat_inst=getTextFromNode(row.xpath('./dn:heimat_inst',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| funded_by=getTextFromNode(row.xpath('./dn:funded_by',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| e_mail2=getTextFromNode(row.xpath('./dn:e_mail2',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| publish_the_data=getTextFromNode(row.xpath('./dn:publish_the_data',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| stay_at_mpiwg=getTextFromNode(row.xpath('./dn:stay_at_mpiwg',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| #cwNode=row.xpath('./dn:current_work.current',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0] | |
| cw=row.xpath('./dn:current_work/dn:DATA',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'}) | |
| if cw: | |
| txt=getTextFromNode(cw[0]) | |
| else: | |
| txt="" | |
| #cwNode=row.xpath('.//dn:current_work.publish',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0] | |
| cw=row.xpath('./dn:current_work/dn:DATA',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'}) | |
| 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.encode('utf-8'),vorname.encode('utf-8')) | |
| memberFolder._setObject(str(username),newObj) | |
| RESPONSE.write("<p>new:%s</p>\n"%username.encode('utf-8')) | |
| obj=getattr(memberFolder,username) | |
| ret=obj.createNewDBEntry(publish_the_data,id,name, | |
| vorname,username,title,position,e_mail, | |
| e_mail_p,date_from,date_to, | |
| abteilung,heimat_inst,funded_by, | |
| e_mail2,txt,txt_p) | |
| RESPONSE.write("""<p>%s</p>"""%ret[1].encode('utf-8')) | |
| except: | |
| RESPONSE.write("<p>ERROR:%s %s %s</p>\n"%(username.encode('utf-8'),name.encode('utf-8'),vorname.encode('utf-8'))) | |
| RESPONSE.write("<p> : %s %s"%sys.exc_info()[:2]) | |
| else: | |
| RESPONSE.write("<p>update:%s</p>\n"%username.encode('utf-8')) | |
| xquery=".//dn:ROW[dn:username='%s']"%username | |
| results=dom.xpath(xquery,explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'}) | |
| if len(results)>1: | |
| RESPONSE.write("<p>WARNING (update): username %s not unique</p>\n"%username.encode('utf-8')) | |
| xquery=".//dn:ROW[dn:publish_the_data='yes' and dn:username='%s']"%username | |
| rd=dom.xpath(xquery,explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'}) | |
| if len(rd)>1:#mehrere published | |
| RESPONSE.write("<p>ERROR (update): username %s not unique and more then one date set to be published</p>\n"%username.encode('utf-8')) | |
| # elif len(rd)==1:#nur einer published, kein published dann mache nichts | |
| # publish_the_data=getTextFromNode(rd[0].xpath('./dn:publish_the_data',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| # date_from=getTextFromNode(rd[0].xpath('./dn:Date_from',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| # date_to=getTextFromNode(rd[0].xpath('./dn:Date_to',explicitNss={'dn':'http://www.filemaker.com/fmpdsoresult'})[0]) | |
| # | |
| obj=getattr(memberFolder,username) | |
| obj.updateDBEntry(DBid=id,publish_the_data=publish_the_data, | |
| date_from=date_from, | |
| date_to=date_to,stay_at_mpiwg=stay_at_mpiwg,position=position) | |
| #TODO: reindexCatlogs and updatePublications wieder einbaue | |
| #self.reindexCatalogs(RESPONSE) | |
| #self.updatePublicationDB() | |
| RESPONSE.write("<h2>Done</h2></body></html>") | |
| return True | |
| def reindexCatalogs(self,RESPONSE=None): | |
| """reindex members and project catalog""" | |
| try: | |
| self.MembersCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) | |
| self.ProjectCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) | |
| except: | |
| zLOG.LOG("MPIWG Root (updatehomepage)",zLOG.WARNING," %s %s"%sys.exc_info()[:2]) | |
| def updateHomepages(self,RESPONSE): | if RESPONSE: |
| """lege members an""" | RESPONSE.redirect('manage_main') |
| def updateHomepages_old(self,RESPONSE): | |
| """lege members an, alte version vollstaendige kopie aller fm-dateien per fm.jar""" | |
| self.upDateSQL('personalwww.xml') | self.upDateSQL('personalwww.xml') |
| founds=self.ZSQLInlineSearch(_table='personal_www',publish_the_data='yes') | founds=self.ZSQLInlineSearch(_table='personal_www',publish_the_data='yes') |
| project=getattr(self,'members') | project=getattr(self,'members') |
| Line 772 class MPIWGRoot(ZSQLExtendFolder): | Line 929 class MPIWGRoot(ZSQLExtendFolder): |
| # ret.append(x.title.decode('utf-8')) | # ret.append(x.title.decode('utf-8')) |
| for x in self.ZopeFind(self.members,obj_metatypes=['MPIWGStaff']): | for x in self.ZopeFind(self.members,obj_metatypes=['MPIWGStaff']): |
| if x[1].isPublished(): | |
| ret.append(x[1].title.decode('utf-8')) | ret.append(x[1].title.decode('utf-8')) |
| ret.sort() | ret.sort() |
| Line 859 class MPIWGRoot(ZSQLExtendFolder): | Line 1017 class MPIWGRoot(ZSQLExtendFolder): |
| ret+="""<li>\n""" | ret+="""<li>\n""" |
| if actualDepth==1: | if actualDepth==1: |
| departmentName={'1':'Department I','2':'Department II','3':'Department III', '4':'Ind. Research Group','5':'Ind. Research Group'} | departmentName={'1':'Department I','2':'Department II','3':'Department III', '4':'Ind. Research Group','5':'Ind. Research Group','6':'Research Network'} |
| department=element[3].getContent('xdata_05') | department=element[3].getContent('xdata_05') |
| ret+="""<a href="#top"><img src="../grafik/totop.gif" vspace="10" border="0"></a><br><a name="dept%s"></a>%s: """%(department,departmentName[department]) | ret+="""<a href="#top"><img src="../grafik/totop.gif" vspace="10" border="0"></a><br><a name="dept%s"></a>%s: """%(department,departmentName[department]) |
| Line 877 class MPIWGRoot(ZSQLExtendFolder): | Line 1035 class MPIWGRoot(ZSQLExtendFolder): |
| return """<h2 class="hier"><a href="%s">Ind. Research Group I: %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('WEB_title')) | return """<h2 class="hier"><a href="%s">Ind. Research Group I: %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('WEB_title')) |
| if element[3].getContent('xdata_05') == "5": | if element[3].getContent('xdata_05') == "5": |
| return """<h2 class="hier"><a href="%s">Ind. Research Group II: %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('WEB_title')) | return """<h2 class="hier"><a href="%s">Ind. Research Group II: %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('WEB_title')) |
| if element[3].getContent('xdata_05') == "6": | |
| return """<h2 class="hier"><a href="%s">Research Network "History of Scientific Objects": %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('WEB_title')) | |
| return """<h2 class="hier"><a href="%s">Department %s: %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('xdata_05'),element[3].getContent('WEB_title')) | return """<h2 class="hier"><a href="%s">Department %s: %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('xdata_05'),element[3].getContent('WEB_title')) |
| Line 999 class MPIWGRoot(ZSQLExtendFolder): | Line 1159 class MPIWGRoot(ZSQLExtendFolder): |
| except: | except: |
| proj=None | proj=None |
| if proj: | if proj and (proj[0].getObject().isPublished()): |
| if person =="Otto Sibum" : person="H. Otto Sibum" | if person =="Otto Sibum" : person="H. Otto Sibum" |
| if person =="Norton Wise" : person="M. Norton Wise" | if person =="Norton Wise" : person="M. Norton Wise" |
| #ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url,person.encode('utf-8'))) | #ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url,person.encode('utf-8'))) |
| Line 1145 class MPIWGRoot(ZSQLExtendFolder): | Line 1305 class MPIWGRoot(ZSQLExtendFolder): |
| return (fieldname in checkFields) | return (fieldname in checkFields) |
| def manage_addMPIWGRootForm(self): | def manage_addMPIWGRootForm(self): |
| """form for adding the root""" | """form for adding the root""" |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self) |
| Line 1243 class MPIWGProject(CatalogAware,Folder): | Line 1400 class MPIWGProject(CatalogAware,Folder): |
| def copyImageToMargin(self,RESPONSE=None): | def copyImageToMargin(self,RESPONSE=None): |
| #TODO: copy more than one image | |
| """copy inline images to marginal images""" | """copy inline images to marginal images""" |
| self.getContent('WEB_project_description',filter='yes') | self.getContent('WEB_project_description',filter='yes') |
| Line 1255 class MPIWGProject(CatalogAware,Folder): | Line 1413 class MPIWGProject(CatalogAware,Folder): |
| self.addImage(None,self.imagecap,filename=filename) | self.addImage(None,self.imagecap,filename=filename) |
| #hole die bilddaten aus der url | #hole die bilddaten aus der url |
| data=urllib.urlopen(self.absolute_url()+"/"+self.imageURL).read() | url=self.absolute_url()+"/"+self.imageURL |
| #url=self.absolute_url()+"/"+filename | |
| try:#relative url | |
| data=urllib.urlopen(url).read() | |
| except: | |
| try:#absolute | |
| data=urllib.urlopen(self.imageURL).read() | |
| except: | |
| zLOG.LOG("MPIWG Project",zLOG.ERROR,"can't open: %s"%url) | |
| obj=getattr(self,filename) | obj=getattr(self,filename) |
| obj.update_data(data) | obj.update_data(data) |
| Line 1741 class MPIWGProject(CatalogAware,Folder): | Line 1908 class MPIWGProject(CatalogAware,Folder): |
| start=kupu.find("<body>") | start=kupu.find("<body>") |
| end=kupu.find("</body>") | end=kupu.find("</body>") |
| newcontent= kupu[start+6:end] | newcontent= kupu[start+6:end] |
| print newcontent | |
| if preview: | if preview: |
| return self.preview(newcontent) | return self.preview(newcontent) |
| Line 1753 class MPIWGProject(CatalogAware,Folder): | Line 1920 class MPIWGProject(CatalogAware,Folder): |
| return True | return True |
| security.declareProtected('View managment screens','edit') | security.declareProtected('View management screens','edit') |
| def edit(self,western=None): | def edit(self,western=None): |
| """Edit pages""" | """Edit pages""" |
| if western: | if western: |
| Line 1763 class MPIWGProject(CatalogAware,Folder): | Line 1930 class MPIWGProject(CatalogAware,Folder): |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGProjectNeu.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGProjectNeu.zpt')).__of__(self) |
| return pt() | return pt() |
| edit_MPIWGProject_main = PageTemplateFile('zpt/edit_MPIWGProject_main', globals()) | |
| def getPathStyle(self, path, selected, style=""): | |
| """returns a string with the given style + 'sel' if path == selected.""" | |
| if path == selected: | |
| return style + 'sel' | |
| else: | |
| return style | |
| def preview(self,description): | def preview(self,description): |
| """preview""" | """preview""" |
| tmpPro=getattr(self,"previewTemplate",None) | tmpPro=getattr(self,"previewTemplate",None) |
| Line 1772 class MPIWGProject(CatalogAware,Folder): | Line 1949 class MPIWGProject(CatalogAware,Folder): |
| for field in definedFields: | for field in definedFields: |
| setattr(tmpPro,field,getattr(self,field)) | setattr(tmpPro,field,getattr(self,field)) |
| tmpPro.WEB_project_description=description[0:] | tmpPro.WEB_project_description=description[0:] |
| tmpPro.invisible=True | |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','previewFrame.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','previewFrame.zpt')).__of__(self) |
| return pt() | return pt() |
| Line 1880 class MPIWGProject(CatalogAware,Folder): | Line 2057 class MPIWGProject(CatalogAware,Folder): |
| splitted=[y.rstrip().lstrip() for y in splitted] | splitted=[y.rstrip().lstrip() for y in splitted] |
| for x in splitted: | for x in splitted: |
| x=re.sub(r"[^A-z ]","",x) | |
| if (not x==u'') and x in wert: | if (not x==u'') and x in wert: |
| return 1 | return 1 |
| return 0 | return 0 |
| Line 1890 class MPIWGProject(CatalogAware,Folder): | Line 2068 class MPIWGProject(CatalogAware,Folder): |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGBasisNeu.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGBasisNeu.zpt')).__of__(self) |
| return pt() | return pt() |
| security.declareProtected('View management screens','editMPIWGBasisForm') | |
| def editMPIWGBasisForm(self): | def editMPIWGBasisForm(self): |
| """editform""" | """editform""" |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGBasis.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGBasis.zpt')).__of__(self) |
| return pt() | return pt() |
| security.declareProtected('View management screens','editMPIWGRelatedPublicationsForm') | |
| def editMPIWGRelatedPublicationsForm(self): | def editMPIWGRelatedPublicationsForm(self): |
| """Edit related Publications""" | """Edit related Publications""" |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGRelatedPublications.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGRelatedPublications.zpt')).__of__(self) |