Diff for /ECHO_content/ECHO_xslt.py between versions 1.14 and 1.21

version 1.14, 2006/10/18 14:42:33 version 1.21, 2008/12/17 12:02:53
Line 7  from ECHO_Nav import ECHO_pageTemplate Line 7  from ECHO_Nav import ECHO_pageTemplate
 from threading import Thread,Timer  from threading import Thread,Timer
 import threading  import threading
 from ECHO_helpers import *  from ECHO_helpers import *
 import ECHO_language  try:
       from ECHO_language import *
   except:
       print "no echo language"
       class ECHO_language:
           """leere Klasse"""
           pass
 import sys  import sys
 import urllib  import urllib
 import urlparse  import urlparse
Line 20  import transaction Line 26  import transaction
 import os.path  import os.path
   
 import urllib,cgi  import urllib,cgi
   import logging
 try:  try:
     from Ft.Xml.Xslt.Processor import Processor      from Ft.Xml.Xslt.Processor import Processor
     from Ft.Xml import InputSource, EMPTY_NAMESPACE,Parse      from Ft.Xml import InputSource, EMPTY_NAMESPACE,Parse
Line 29  except: Line 35  except:
     print "4suite has to be installed"      print "4suite has to be installed"
   
   
 class getXML(Implicit):  class getXML(Thread):
     """get XML thread"""      """get XML thread"""
   
     def set(self,qs,xsl,result):      def set(self,qs,xsl,result):
Line 57  class getXML(Implicit): Line 63  class getXML(Implicit):
       
     def __call__(self):      def __call__(self):
         """wait"""          """wait"""
           self.run()
         return True          return True
           
     def run(self):      def run(self):
Line 65  class getXML(Implicit): Line 72  class getXML(Implicit):
   
         try:          try:
       
             urlH=urllib.urlopen(self._v_qs)              #urlH=urllib.urlopen(self._v_qs)
             xml=urlH.read()              #xml=urlH.read()
             urlH.close()              #urlH.close()
             xsltproc=Processor()              xsltproc=Processor()
             document = InputSource.DefaultFactory.fromString(xml)              logging.debug("start XML")
               document = InputSource.DefaultFactory.fromUri(self._v_qs)
                           
             stylesheet = InputSource.DefaultFactory.fromUri(self.xsl)              stylesheet = InputSource.DefaultFactory.fromUri(self.xsl)
                           logging.debug("got all files XML")
             xsltproc.appendStylesheet(stylesheet)              xsltproc.appendStylesheet(stylesheet)
                           logging.debug("got all files do the transform")
                   
             #print self.xsl              #print self.xsl
             #< xsltproc.run(document)              #< xsltproc.run(document)
Line 100  from ZODB.FileStorage import FileStorage Line 108  from ZODB.FileStorage import FileStorage
 class ECHO_cache:  class ECHO_cache:
     def __init__(self):      def __init__(self):
         """init the storage"""          """init the storage"""
         self.storage=FileStorage("/var/tmp/echo_cache.fs")      try:
               self.storage=FileStorage(os.path.join(INSTANCE_HOME,"var/echo_cache.fs"))       
       
         self.db=DB(self.storage)              self.db=DB(self.storage)    
         self.connection=self.db.open()          self.connection=self.db.open()
         self.root=self.connection.root()          self.root=self.connection.root()
               except:
           pass
     def deleteObject(self,name,pn=None):      def deleteObject(self,name,pn=None):
         """delete an object from cache"""          """delete an object from cache"""
         fileStore=self.root.get(name,None)          fileStore=self.root.get(name,None)
Line 141  class ECHO_cache: Line 152  class ECHO_cache:
             return self.root[name].get(pn,None)              return self.root[name].get(pn,None)
                   
   
 class ECHO_xslt(ECHO_pageTemplate,ECHO_language.ECHO_language):  class ECHO_xslt(ECHO_pageTemplate,ECHO_language):
     """ECHO_xslt classe"""      """ECHO_xslt classe"""
   
     meta_type="ECHO_xslt"      meta_type="ECHO_xslt"
Line 213  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 224  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
                                   
             qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING'])              qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING'])
             xsl=self.absolute_url()+"/xslt"              xsl=self.absolute_url()+"/xslt"
             self._v_xmltrans=getXML().__of__(self)              #self._v_xmltrans=getXML().__of__(self)
               self._v_xmltrans=getXML()
             #self._xmltrans.start()              #self._xmltrans.start()
             thread=Thread(target=self._v_xmltrans)              #thread=Thread(target=self._v_xmltrans)
             thread.start()              #thread.start()
               logging.debug("Thread prepared")
             self._v_xmltrans.set(qs,xsl,None)              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'])              wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template'])
             if wait_template:              if wait_template:
                 return wait_template[0][1]()                  return wait_template[0][1]()
Line 401  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 415  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          """getpage mit lexikalischer analyse und xslt transform
         if _caching=yes dann wird die lwxikalisch analysierte seite in einem cache abgespeichert          if _caching=yes dann wird die lwxikalisch analysierte seite in einem cache abgespeichert
         """          """
Line 460  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 474  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
         xsltproc.appendStylesheet(stylesheet)          xsltproc.appendStylesheet(stylesheet)
         tmp=xsltproc.run(document)          tmp=xsltproc.run(document)
                   
         if _links:          if _links and (_displaylinks=='yes'):
             _links=urllib.unquote(_links)              _links=urllib.unquote(_links)
             tmp=self.addLinks(tmp,url=_links)              tmp=self.addLinks(tmp,url=_links)
                           
Line 508  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 522  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
         xmlt,self.baseUri=self.getTextInput()          xmlt,self.baseUri=self.getTextInput()
                   
         #get the text from cache, if existing          #get the text from cache, if existing
           try:
         fromCache=self.cache.retrieveObject(self.baseUri,"-1")          fromCache=self.cache.retrieveObject(self.baseUri,"-1")
           except:
               fromCache=None
         if fromCache and _caching=="yes":          if fromCache and _caching=="yes":
                       
             txt = fromCache              txt = fromCache
Line 532  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 549  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
             #suche wieviele pb for der id              #suche wieviele pb for der id
                           
                           
             idpb=dom.xpath("//*[@id='%s']/preceding::node()/mpiwg:pb"%_id,explicitNss={'html':'http://test.de','mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})              idpb=dom.xpath("//*[@id='%s']/preceding::node()/mpiwg:pb"%_id,explicitNss={'html':'http://www.w3.org/1999/xhtml','mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})
             if len(idpb)==0:              if len(idpb)==0:
                 idpb=dom.xpath("//*[@id='%s']/preceding::node()/pb"%_id)                  idpb=dom.xpath("//*[@id='%s']/preceding::node()/pb"%_id)
                     
             if len(idpb)==0:              if len(idpb)==0:
                         k=0                          k=0
                         for node in dom.xpath("//*[@id='%s']//preceding::node()"%_id,explicitNss={'html':'http://test.de','mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):                          for node in dom.xpath("//*[@id='%s']//preceding::node()"%_id,explicitNss={'html':'http://www.w3.org/1999/xhtml','mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}):
                             if getattr(node,'tagName',"")=="mpiwg:pb":                              if getattr(node,'tagName',"")=="mpiwg:pb":
                                 k+=1                                  k+=1
             else:              else:
                 k=len(idpb)                  k=len(idpb)
               #pn=k-1 #-1 wegen Seitenzahlzaehlung startet mit 0
             pn=k-1 #-1 wegen Seitenzahlzaehlung startet mit 0              pn=k-1 #-1 wegen Seitenzahlzaehlung startet mit 0
               
         if pn > len(pbs):          if pn > len(pbs):
             if REQUEST:              if REQUEST:
                 return "Sorry, pagenumber %s does not exit"%(pn+1)                  return "Sorry, pagenumber %s does not exit"%(pn+1)
Line 568  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 585  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
                 if parent:                  if parent:
                     parent[0].removeChild(node)                      parent[0].removeChild(node)
             except:              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()          strio = StringIO()
         PrettyPrint(dom,strio)           PrettyPrint(dom,strio) 
         xmlstr = strio.getvalue()          xmlstr = strio.getvalue()
Line 626  def manage_addECHO_xslt(self, id, label, Line 643  def manage_addECHO_xslt(self, id, label,
             u = "%s/%s" % (u, quote(id))              u = "%s/%s" % (u, quote(id))
         REQUEST.RESPONSE.redirect(u+'/manage_main')          REQUEST.RESPONSE.redirect(u+'/manage_main')
     return ''      return ''
   

Removed from v.1.14  
changed lines
  Added in v.1.21


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>