--- ECHO_content/ECHO_xslt.py 2006/10/19 07:27:59 1.16 +++ ECHO_content/ECHO_xslt.py 2008/12/17 12:12:27 1.22 @@ -26,7 +26,7 @@ import transaction import os.path import urllib,cgi - +import logging try: from Ft.Xml.Xslt.Processor import Processor from Ft.Xml import InputSource, EMPTY_NAMESPACE,Parse @@ -35,7 +35,7 @@ except: print "4suite has to be installed" -class getXML(Implicit): +class getXML(Thread): """get XML thread""" def set(self,qs,xsl,result): @@ -63,6 +63,7 @@ class getXML(Implicit): def __call__(self): """wait""" + self.run() return True def run(self): @@ -71,16 +72,17 @@ class getXML(Implicit): try: - urlH=urllib.urlopen(self._v_qs) - xml=urlH.read() - urlH.close() + #urlH=urllib.urlopen(self._v_qs) + #xml=urlH.read() + #urlH.close() xsltproc=Processor() - document = InputSource.DefaultFactory.fromString(xml) + logging.debug("start XML") + document = InputSource.DefaultFactory.fromUri(self._v_qs) stylesheet = InputSource.DefaultFactory.fromUri(self.xsl) - + logging.debug("got all files XML") xsltproc.appendStylesheet(stylesheet) - + logging.debug("got all files do the transform") #print self.xsl #< xsltproc.run(document) @@ -106,11 +108,16 @@ from ZODB.FileStorage import FileStorage class ECHO_cache: def __init__(self): """init the storage""" - self.storage=FileStorage("/var/tmp/echo_cache.fs") - self.db=DB(self.storage) - self.connection=self.db.open() - self.root=self.connection.root() - + + try: + self.storage=FileStorage(os.path.join(INSTANCE_HOME,"var/echo_cache.fs")) + + self.db=DB(self.storage) + self.connection=self.db.open() + self.root=self.connection.root() + except: + pass + def deleteObject(self,name,pn=None): """delete an object from cache""" fileStore=self.root.get(name,None) @@ -219,15 +226,18 @@ class ECHO_xslt(ECHO_pageTemplate,ECHO_l qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING']) xsl=self.absolute_url()+"/xslt" - self._v_xmltrans=getXML().__of__(self) + #self._v_xmltrans=getXML().__of__(self) + self._v_xmltrans=getXML() #self._xmltrans.start() - thread=Thread(target=self._v_xmltrans) - thread.start() + #thread=Thread(target=self._v_xmltrans) + #thread.start() + logging.debug("Thread prepared") self._v_xmltrans.set(qs,xsl,None) - self._v_xmltrans.run() - + self._v_xmltrans.start() + logging.debug("Thread started") - self.threadName=thread.getName()[0:] + #self.threadName=thread.getName()[0:] + self.threadName=self._v_xmltrans.getName()[0:] wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template']) if wait_template: return wait_template[0][1]() @@ -407,7 +417,7 @@ class ECHO_xslt(ECHO_pageTemplate,ECHO_l - def getPageLex(self,_pn="1",_id=None,_caching=None,_links=None,_showall="no"): + def getPageLex(self,_pn="1",_id=None,_caching=None,_links=None,_showall="no",_displaylinks="yes"): """getpage mit lexikalischer analyse und xslt transform if _caching=yes dann wird die lwxikalisch analysierte seite in einem cache abgespeichert """ @@ -466,7 +476,7 @@ class ECHO_xslt(ECHO_pageTemplate,ECHO_l xsltproc.appendStylesheet(stylesheet) tmp=xsltproc.run(document) - if _links: + if _links and (_displaylinks=='yes'): _links=urllib.unquote(_links) tmp=self.addLinks(tmp,url=_links) @@ -514,7 +524,10 @@ class ECHO_xslt(ECHO_pageTemplate,ECHO_l xmlt,self.baseUri=self.getTextInput() #get the text from cache, if existing - fromCache=self.cache.retrieveObject(self.baseUri,"-1") + try: + fromCache=self.cache.retrieveObject(self.baseUri,"-1") + except: + fromCache=None if fromCache and _caching=="yes": txt = fromCache @@ -550,7 +563,7 @@ class ECHO_xslt(ECHO_pageTemplate,ECHO_l else: k=len(idpb) #pn=k-1 #-1 wegen Seitenzahlzaehlung startet mit 0 - pn=k #-1 wegen Seitenzahlzaehlung startet mit 0 + pn=k-1 #-1 wegen Seitenzahlzaehlung startet mit 0 if pn > len(pbs): if REQUEST: return "Sorry, pagenumber %s does not exit"%(pn+1) @@ -574,7 +587,7 @@ class ECHO_xslt(ECHO_pageTemplate,ECHO_l if parent: parent[0].removeChild(node) except: - zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) + logger("ECHO_Resource (getAccessRightMD)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2]) strio = StringIO() PrettyPrint(dom,strio) xmlstr = strio.getvalue() @@ -632,4 +645,3 @@ def manage_addECHO_xslt(self, id, label, u = "%s/%s" % (u, quote(id)) REQUEST.RESPONSE.redirect(u+'/manage_main') return '' -