|
|
| version 1.13, 2006/10/12 16:37:33 | version 1.22, 2008/12/17 12:12:27 |
|---|---|
| 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 19 import transaction | Line 25 import transaction |
| import os.path | import os.path |
| import urllib | 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""" |
| Line 141 class ECHO_cache: | Line 154 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 226 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 283 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 299 class ECHO_xslt(ECHO_pageTemplate,ECHO_l |
| if type=="target": | if type=="target": |
| for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): | for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): |
| fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url | |
| return urllib.unquote(fn) # dann gibt diese zurueck | |
| ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex) | |
| lstr+="&_links="+urllib.quote(url)+'&_linkid='+linkid+'&_linktype=target' | |
| lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'target') | |
| lstr+="&_links="+urllib.quote(url) | |
| else: | else: |
| for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): | for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): |
| fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url | |
| return urllib.unquote(fn) # dann gibt diese zurueck | |
| ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex) | lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'source') |
| lstr+="&_links="+urllib.quote(url)+'&_linkid='+linkid+'&_linktype=source' | lstr+="&_links="+urllib.quote(url) |
| return lstr | return lstr |
| def addLinksUrl(self,txt,url): | |
| """add reference to links to url""" | |
| ret=[] | |
| dom=NonvalidatingReader.parseUri(url) | |
| textDom=NonvalidatingReader.parseString(txt) | |
| #find ids in txt | |
| ids=textDom.xpath("//*[@id]") | |
| for textid in ids: | |
| xp="//mpiwg:link[mpiwg:source/@refid='%s']"%textid.xpath("@id")[0].value | |
| for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): | |
| ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | |
| selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | |
| linkid=link.xpath("@id")[0].value | |
| ret.append('%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'source')) | |
| xp="//mpiwg:link[mpiwg:target/@refid='%s']"%textid.xpath("@id")[0].value | |
| for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): | |
| ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | |
| selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | |
| linkid=link.xpath("@id")[0].value | |
| ret.append('%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'target')) | |
| return ret | |
| def addLinks(self,txt,url="http://127.0.0.1:8080/HFQP/linkCreator/getCollectionXML?collection=commentary2"): | def addLinks(self,txt,url="http://127.0.0.1:8080/HFQP/linkCreator/getCollectionXML?collection=commentary2"): |
| """add links to a page from xml linkfile""" | """add links to a page from xml linkfile""" |
| Line 319 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 371 class ECHO_xslt(ECHO_pageTemplate,ECHO_l |
| xp="//mpiwg:link[mpiwg:source/@refid='%s']"%textid.xpath("@id")[0].value | xp="//mpiwg:link[mpiwg:source/@refid='%s']"%textid.xpath("@id")[0].value |
| for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): | for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): |
| fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | fn=link.xpath("mpiwg:target/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| print fn | |
| if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url | |
| lstr=urllib.unquote(fn) # dann gibt diese zurueck | |
| else: | |
| try: | |
| ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref=link.xpath("mpiwg:target/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref2=link.xpath("mpiwg:target/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | selectionNodeIndex=link.xpath("mpiwg:target/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| linkid=link.xpath("@id")[0].value | linkid=link.xpath("@id")[0].value |
| lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex) | lstr=slaveurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,'target') |
| lstr+="&_links="+urllib.quote(url)+'&_url='+url+'&_linkid='+linkid+'&_linktype=target' | lstr+="&_links="+urllib.quote(url) |
| except: | |
| lstr="" | |
| node=self.createLinkNode(lstr,textDom) | node=self.createLinkNode(lstr,textDom) |
| textid.parentNode.insertBefore(node,textid) | textid.parentNode.insertBefore(node,textid) |
| Line 333 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 392 class ECHO_xslt(ECHO_pageTemplate,ECHO_l |
| xp="//mpiwg:link[mpiwg:target/@refid='%s']"%textid.xpath("@id")[0].value | xp="//mpiwg:link[mpiwg:target/@refid='%s']"%textid.xpath("@id")[0].value |
| for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): | for link in dom.xpath(xp,explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'}): |
| fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | fn=link.xpath("mpiwg:source/@filename",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| if urlparse.urlparse(urllib.unquote(fn))[0]=="http": # fn ist eine url | |
| lstr=urllib.unquote(fn) # dann gibt diese zurueck | |
| else: | |
| ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref=link.xpath("mpiwg:source/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | ref2=link.xpath("mpiwg:source/mpiwg:pagelink/@refid",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value | selectionNodeIndex=link.xpath("mpiwg:source/mpiwg:pagelink/@selectionNodeIndex",explicitNss={'mpiwg':'http://www.mpiwg-berlin.mpg.de/namespace'})[0].value |
| linkid=link.xpath("@id")[0].value | linkid=link.xpath("@id")[0].value |
| lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s'%(ref2,selectionNodeIndex) | lstr=masterurl+'fn='+fn+'&_id='+ref+'&_pagelink=%s///%s/%s/%s'%(ref2,selectionNodeIndex,linkid,"source") |
| lstr+="&_links="+urllib.quote(url)+'&_linkid='+linkid+'&_linktype=source' | lstr+="&_links="+urllib.quote(url) |
| node=self.createLinkNode(lstr,textDom) | node=self.createLinkNode(lstr,textDom) |
| textid.parentNode.insertBefore(node,textid) | textid.parentNode.insertBefore(node,textid) |
| Line 354 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 417 class ECHO_xslt(ECHO_pageTemplate,ECHO_l |
| def getPageLex(self,_pn="1",_id=None,_caching=None,_links=None): | 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 |
| """ | """ |
| def encode(hash): | |
| ret=[] | |
| for x in hash.keys(): | |
| value=hash[x] | |
| if type(value) is ListType: | |
| for z in value: | |
| ret.append("%s=%s"%(x,z)) | |
| else: | |
| ret.append("%s=%s"%(x,value)) | |
| return "&".join(ret) | |
| if not _caching: | if not _caching: |
| _caching=self.caching | _caching=self.caching |
| Line 379 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 455 class ECHO_xslt(ECHO_pageTemplate,ECHO_l |
| else: | else: |
| txt=self.tagLex(id=_id) | txt=self.tagLex(id=_id) |
| if _showall=="yes": | |
| params=cgi.parse_qs(self.REQUEST['QUERY_STRING']) | |
| params['_pagelink']=self.addLinksUrl(txt,url=_links) | |
| params['_showall']='no' | |
| print self.absolute_url()+"?"+encode(params) | |
| self.REQUEST.RESPONSE.redirect(self.absolute_url()+"/getPageLex?"+encode(params)) | |
| xsl=self.xslt() | xsl=self.xslt() |
| xsltproc=Processor() | xsltproc=Processor() |
| Line 390 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 476 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 438 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 524 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 462 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 551 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 498 class ECHO_xslt(ECHO_pageTemplate,ECHO_l | Line 587 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 556 def manage_addECHO_xslt(self, id, label, | Line 645 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 '' |