--- ECHO_content/ECHO_collection.py 2004/09/27 19:55:08 1.170 +++ ECHO_content/ECHO_collection.py 2004/10/05 09:30:46 1.174 @@ -32,6 +32,12 @@ from Acquisition import Implicit from ECHO_helpers import displayTypes import urllib import time +from Ft.Xml.Domlette import NonvalidatingReader +from Ft.Xml.Domlette import PrettyPrint +from Ft.Xml import EMPTY_NAMESPACE + +import Ft.Xml.XPath +import cStringIO try: from psycopg import libpq @@ -390,10 +396,11 @@ def writeMetadata(url,metadict,project=N metanode.removeChild(nodeOld[0]).unlink() metanodeneu=dom.createElement(metaData) - try: - metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf-8")) - except: - metanodetext=dom.createTextNode(metadict[metaData].encode('utf-8')) + metanodetext=dom.createTextNode(metadict[metaData]) + #try: + #metanodetext=dom.createTextNode(unicode(metadict[metaData],"utf-8")) + #except: + #metanodetext=dom.createTextNode(metadict[metaData].encode('utf-8')) metanodeneu.appendChild(metanodetext) metanode.appendChild(metanodeneu) @@ -420,7 +427,10 @@ def writeMetadata(url,metadict,project=N if digiliburlprefix: updateTextToolNode('digiliburlprefix',digiliburlprefix) - return dom.toxml().encode('utf-8') + try: + return dom.toxml().encode('utf-8') + except: + return dom.toxml('utf-8') @@ -1028,6 +1038,7 @@ class ECHO_resource(Folder,Persistent): path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server + path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo path=re.sub('/index.meta','',path) @@ -1091,6 +1102,7 @@ class ECHO_resource(Folder,Persistent): path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server + path=re.sub('http://echo.mpiwg-berlin.mpg.de','',path) # falls echo path=re.sub('http://vision.rz-berlin.mpg.de','',path) # falls vision als server @@ -1135,7 +1147,9 @@ class ECHO_resource(Folder,Persistent): texttools=dom.getElementsByTagName('texttool') text=texttools[0].getElementsByTagName('text') texturl=getText(text[0].childNodes) - + if not (texturl.split(":")[0] in ['http','ftp','file']): + texturl=re.sub("//","/",texturl) + #return texturl+"::"+texturl.split(":")[0] if not noredirect: self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') self.REQUEST.RESPONSE.redirect(texturl) @@ -2089,7 +2103,7 @@ class ECHO_collection(Folder, Persistent pt=PageTemplateFile('Products/ECHO_content/zpt/changeViewerTemplateSet').__of__(self) return pt() - def getViewerTemplateSets(self,obj_ids=None): + def getViewerTemplateSets(self,obj_ids=None,RESPONSE=None): """Get the ViewerTemplateSet title for configuration""" ret=[] @@ -2098,7 +2112,7 @@ class ECHO_collection(Folder, Persistent for viewerTemplateSet in viewerTemplateSets: ret.append((viewerTemplateSet[1].title,viewerTemplateSet[0],viewerTemplateSet[1])) - + return ret except: @@ -2278,6 +2292,11 @@ class ECHO_collection(Folder, Persistent def getCollectionTreeXML(self): """Tree as XML""" + def addPassWd(str): + """adds a user/passwd to an url""" + txt2=re.sub(r"(http://)(.*?)","\g<1>www:3333@\g<2>",str) + return txt2 + def getCollection(object,depth=0): depth+=1 collections="" @@ -2285,7 +2304,7 @@ class ECHO_collection(Folder, Persistent element=getattr(object,entry) try: if element.meta_type in ["ECHO_collection","ECHO_group"]: - collections+="" + collections+="" collections+=getCollection(element,depth)+"\n" except: """nothing""" @@ -3507,31 +3526,45 @@ class ECHO_root(Folder,Persistent,Implic def xml2html(self,str,quote="yes"): """link2html fuer VLP muss hier noch raus""" - #print str if str: if quote=="yes2": str=re.sub("\&","&",str) - dom=xml.dom.minidom.parseString(str) - links=dom.getElementsByTagName("link") - + #dom=xml.dom.minidom.parseString(str) + dom = NonvalidatingReader.parseString(str,"http://www.mpiwg-berlin.mpg.de/") + #links=dom.getElementsByTagName("link") + links=Ft.Xml.XPath.Evaluate(".//link", contextNode=dom) for link in links: - link.tagName="a" - ref=link.getAttribute("ref") - pn=link.getAttribute("page") - + #link.tagName="a" + + ref=link.getAttributeNS(EMPTY_NAMESPACE,"ref") + pn=link.getAttributeNS(EMPTY_NAMESPACE,"page") + cns=link.childNodes + + newLink=dom.createElementNS(EMPTY_NAMESPACE,"a") + for cn in cns: + newLink.appendChild(cn) + + link.parentNode.replaceChild(newLink,link) if self.checkRef(ref): if pn: - link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn) + newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref+"&p="+pn) else: - link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref) + newLink.setAttributeNS(EMPTY_NAMESPACE,"href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref) - str= dom.toxml() - + #str= dom.toxml('utf-8') + buf = cStringIO.StringIO() + PrettyPrint(dom, stream=buf, encoding='UTF-8') + str = buf.getvalue() + buf.close() + #str=PrettyPrint(dom.documentElement,encoding='UTF-8') #print link.toxml('utf-8') + #print type(str) retStr=regexpPage.search(str) - - return retStr.group(1) + try: # hack warum fehtl manchmal page?? + return retStr.group(1) + except: + return str return "" def checkRef(self,ref): @@ -3568,7 +3601,7 @@ class ECHO_root(Folder,Persistent,Implic """ for partner in partners: - ret+="""\n"""%(partner.getId(),unicode(partner.title,'utf-8','replace')) + ret+="""\n"""%(partner.getId(),partner.title) return ret+"\n"