Diff for /ECHO_content/ECHO_xslt.py between versions 1.8 and 1.9

version 1.8, 2006/09/10 11:03:07 version 1.9, 2006/09/10 22:57:38
Line 13  import urllib Line 13  import urllib
 import urlparse  import urlparse
 from Ft.Xml.Domlette import Print, PrettyPrint  from Ft.Xml.Domlette import Print, PrettyPrint
 from StringIO import StringIO  from StringIO import StringIO
   from types import *
 from Globals import package_home  from Globals import package_home
   import transaction
   
 import os.path  import os.path
   
Line 61  class getXML(Implicit): Line 61  class getXML(Implicit):
     def run(self):      def run(self):
         """call it"""          """call it"""
         xml=""          xml=""
         print "X",self._v_qs  
         try:          try:
       
             urlH=urllib.urlopen(self._v_qs)              urlH=urllib.urlopen(self._v_qs)
Line 94  class getXML(Implicit): Line 94  class getXML(Implicit):
   
         return self.result          return self.result
   
   from ZODB import DB
   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()
       
       def deleteObject(self,name,pn=None):
           """delete an object from cache"""
           fileStore=self.root.get(name,None)
           if fileStore:
               if not pn:
                   del(self.root[name])
               else:
                   if self.root[name].get(pn,None):
                       del(self.root[name][pn])
                       
           
       def storeObject(self,name,pn,object):
           """store an object"""
           
           if not self.root.get(name,None):
               self.root[name]={}
               
   
           #following is necessary to make clear that object has really changed for ZODB
           tmp=self.root[name]
           tmp[pn]=object
           self.root[name]=tmp
           transaction.get().commit()
           return True
      
       def retrieveObject(self,name,pn):
           """retrieve it"""
           
           fileStore=self.root.get(name,None)
           if not fileStore:
               return None
           else:
               return self.root[name].get(pn,None)
   
           
 class ECHO_xslt(ECHO_pageTemplate,ECHO_language.ECHO_language):  class ECHO_xslt(ECHO_pageTemplate,ECHO_language.ECHO_language):
Line 101  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 144  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
   
     meta_type="ECHO_xslt"      meta_type="ECHO_xslt"
           
       cache=ECHO_cache()
       
     results={}      results={}
     manage_options=ECHO_pageTemplate.manage_options+(      manage_options=ECHO_pageTemplate.manage_options+(
      {'label':'Change xml-ressource','action':'change_ECHO_xsltForm'},)       {'label':'Change xml-ressource','action':'change_ECHO_xsltForm'},)
Line 173  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 218  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
                 return self._v_xmltrans.getResult()                  return self._v_xmltrans.getResult()
   
           
     def getPageLex(self,_pn="1"):  
         """getpage with linkss to lexicon"""      def deleteCache(self):
         return self.tagLex(nr=_pn)          """deletefrom cache"""
           fn=self.REQUEST['fn']
           self.cache.deleteObject(fn)
           
       def getPageLex(self,_pn="1",_caching="yes"):
           """getpage mit lexikalischer analyse und xslt transform
           if _caching=yes dann wird die lwxikalisch analysierte seite in einem cache abgespeichert
           """
          
           fn=self.REQUEST['fn']
   
           
           fromCache=self.cache.retrieveObject(fn,_pn)
   
           if fromCache and _caching=="yes":
               print "retrieve",fn,_pn 
               txt = fromCache
           else:
               txt=self.tagLex(nr=_pn)   
               print "store",fn,_pn 
               self.cache.storeObject(fn,_pn,txt[0:])
           
           xsl=self.xslt()
           
           xsltproc=Processor()
           if type(txt)==UnicodeType:
               document = InputSource.DefaultFactory.fromString(txt.encode('utf-8'))
           else:
               document = InputSource.DefaultFactory.fromString(txt)
           stylesheet = InputSource.DefaultFactory.fromString(xsl)
           xsltproc.appendStylesheet(stylesheet)
           tmp=xsltproc.run(document)
           
           return tmp[0:]
               
           
     def getPage(self,_pn,REQUEST=None):      def getPage(self,_pn,REQUEST=None):
         """get a page from an xml"""          """get a page from an xml"""
Line 190  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 269  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
                                    )                                     )
         root=newDoc.createElement('page')          root=newDoc.createElement('page')
         newDoc.appendChild(root)          newDoc.appendChild(root)
           
           
         qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING'])          qs="%s%s"%(self.cgiUrl,self.REQUEST['QUERY_STRING'])
         print qs          
           
        
         xmlt=urllib.urlopen(qs).read()          xmlt=urllib.urlopen(qs).read()
         dom=Parse(xmlt)          dom=Parse(xmlt)
                 
Line 247  class ECHO_xslt(ECHO_pageTemplate,ECHO_l Line 330  class ECHO_xslt(ECHO_pageTemplate,ECHO_l
         strio = StringIO()          strio = StringIO()
         PrettyPrint(dom,strio)           PrettyPrint(dom,strio) 
         xmlstr = strio.getvalue()          xmlstr = strio.getvalue()
   
         return xmlstr          return xmlstr
   
   

Removed from v.1.8  
changed lines
  Added in v.1.9


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