--- ECHO_content/ECHO_xslt.py 2005/04/07 21:01:10 1.1 +++ ECHO_content/ECHO_xslt.py 2005/04/10 11:37:03 1.2 @@ -4,6 +4,7 @@ from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Globals import DTMLFile from ECHO_Nav import ECHO_pageTemplate +from threading import Thread,Timer from Globals import package_home @@ -19,34 +20,89 @@ except: print "4suite has to be installed" +class getXML: + """get XML thread""" + + def __init__(self,qs,xsl): + + self.qs=qs + self.xsl=xsl + self.result=None + + def __call__(self): + + urlH=urllib.urlopen(self.qs) + xml=urlH.read() + urlH.close() + + + xsltproc=Processor() + document = InputSource.DefaultFactory.fromString(xml) + stylesheet = InputSource.DefaultFactory.fromUri(self.xsl) + xsltproc.appendStylesheet(stylesheet) + + self.result=xsltproc.run(document) + + + def getResult(self): + return self.result + + + + class ECHO_xslt(ECHO_pageTemplate): """ECHO_xslt classe""" meta_type="ECHO_xslt" + def refreshTxt(self): + """txt fuer refresh""" + return """ 2;url=%s?repeat=%s """%(self.absolute_url(),self.threadName) def xslt(self): - """standard ausgabe""" + """xslt""" + return self.pt_render() - self.cgiUrl="http://nausikaa2.mpiwg-berlin.mpg.de/cgi-bin/search/q1" - qs="%s?%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING']) - #urlH=urllib.urlopen(qs) - #xml=urlH.read() - #urlH.close() - #print xml - #return xml - - xsltproc=Processor() - document = InputSource.DefaultFactory.fromUri(qs) - stylesheet = InputSource.DefaultFactory.fromUri(self.absolute_url()) - xsltproc.appendStylesheet(stylesheet) - - html=xsltproc.run(document) - - return html + + def index_html(self,repeat=None): + """standard ausgabe""" + threadName=repeat + + if not threadName or threadName=="": + self.cgiUrl="http://medea.mpiwg-berlin.mpg.de/cgi-bin/search/q1" + qs="%s?%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING']) + xsl=self.absolute_url()+"/xslt" + self.xmltrans=getXML(qs,xsl) + thread=Thread(target=self.xmltrans) + + thread.start() + + self.threadName=thread.getName()[0:] + wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template']) + if wait_template: + return wait_template[0][1]() + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','xsltWait.zpt')).__of__(self) + return pt() + #xmltrans.run() + + else: + + if (self.xmltrans.getResult()==None): + killThread(self.xmltrans) + + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','xsltWait.zpt')).__of__(self) + return pt() + else: + return self.xmltrans.getResult() + + +def killThread(thread): + print "killing" + del thread + def manage_addECHO_xsltForm(self): """Form for adding""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddECHO_xslt.zpt')).__of__(self)