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 |
|
|
|
|