--- ECHO_content/ECHO_collection.py 2005/11/29 15:30:34 1.257 +++ ECHO_content/ECHO_collection.py 2006/03/03 22:05:31 1.267 @@ -15,7 +15,7 @@ try: except: print "PDF generation will not work" - +import urlparse import string import tempfile import re @@ -38,6 +38,7 @@ from Products.PageTemplates.ZopePageTemp from Globals import Persistent, package_home from Acquisition import Implicit from Products.ZCatalog.CatalogPathAwareness import CatalogAware +from Products.ZCTextIndex.ZCTextIndex import manage_addLexicon import urllib import cgi @@ -50,6 +51,7 @@ from Ft.Xml import EMPTY_NAMESPACE import Ft.Xml.XPath import cStringIO import zLOG +import sys try: from psycopg import libpq @@ -68,7 +70,7 @@ from ECHO_helpers import * from ECHO_language import * from ECHO_movie import * import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen - +import xmlrpclib def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""): @@ -341,7 +343,7 @@ class ECHO_fullText(ZopePageTemplate,ECH def getPage(self,nr='1'): """get page n""" #return self().encode('latin-1','ignore') - dom=xml.dom.minidom.parseString(self().encode('utf-8','ignore')) + dom=xml.dom.minidom.parseString(self()) pages=dom.getElementsByTagName('page') return pages[int(nr)-1].toxml() @@ -398,7 +400,7 @@ class ECHO_resource(CatalogAware,Folder, def reindex(self): """generate fields for indexing and reindex""" - import urlparse + #TODO: korrigieren des metalink pfades konfigurierbar machen splitted= [x for x in urlparse.urlparse(self.metalink)] splitted[1]="foxridge.mpiwg-berlin.mpg.de"[0:] @@ -511,72 +513,128 @@ class ECHO_resource(CatalogAware,Folder, return ret+self.createSubElementRDF(urn=urn) - def getAccessRightSelectorHTML(self,outlook="select"): - """htmlselector""" - values=['free','mpiwg'] + def changeAccessRightForm(self,preselect=None): + """change the access rights""" + + pt=zptFile(self, 'zpt/ChangeECHO_resourceAccessRight.zpt') + return pt(preselect=preselect) + + def changeAccessRight(self): + """changeRights""" + argv=self.REQUEST.form + self.setAccessRightXML(argv["%s_xml"%self.getId()]) + self.accessRight=argv["%s_echo"%self.getId()] + + self.REQUEST.RESPONSE.redirect('manage_main') + + + def getAccessRightSelectorHTML(self,outlook="select",xmldominant=None,preselect=None): + """htmlselector, xmldominant= in der regel wird der wert des xmlfiles ausgegeben ausser er existiert nicht""" + values=['','free','MPIWG'] + if preselect:#set all to the preselected + ar=(preselect,preselect) + else:#else set to actual value + ar=self.getAccessRightMD() + if outlook=="select": - ret=""""""%self.getId() + ret1="""" + + if value==ar[1]: + ret1+=""%value + else: + ret1+=""%value + + + if not xmldominant: + return ret+"",ret1+"" + else: + if ar[0] is not None: + return ret+"" + else: + return "

No xml file (only local selection):"+ret1 else: ret="" + ret1="" for value in values: - if value==self.getAccessRightMD(): - ret+="""%s"""%(self.getId(),value,value) + if value==ar[0]: + ret+="""%s"""%(self.getId(),value,value) else: - ret+="""%s"""%(self.getId(),value,value) - return ret + ret+="""%s"""%(self.getId(),value,value) + + if value==ar[1]: + ret1+="""%s"""%(self.getId(),value,value) + else: + ret1+="""%s"""%(self.getId(),value,value) + + if not xmldominant: + return ret,ret1 + else: + if ar[0]: + return ret + else: + return "

No xml file (only local selection)

"+ret1 + + def copyAccessRightsFromMD(self): + """kopiere rechte aus den metadaten""" + self.accessRight=self.getAccessRightMD()[0] + + + + def getAccessRightMD(self): """set accessright""" url=self.metalink try: - geturl="" - for line in ECHO_helpers.urlopen(url).readlines(): - geturl=geturl+line - - + urllib.urlopen(url) except: - return (None,"Cannot open: "+url) + zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) + return None,getattr(self,'accessRight','') + + try: - dom=xml.dom.minidom.parseString(geturl) - root=dom.getElementsByTagName('resource')[0] + dom = NonvalidatingReader.parseUri(url) except: - return (None,"Cannot parse: "+url+"
"+geturl) + zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) + return (None,"Cannot parse: "+url+"
"+"%s (%s)"%sys.exc_info()[0:2]) - internal=dom.getElementsByTagName('internal') - if internal: - institution=dom.getElementsByTagName('institution') - return getText(institution[0].childNodes) - - free=dom.getElementsByTagName('free') - if free: - return "free" - return "free" #default free + accessright=dom.xpath("//meta/access-conditions/access/@type") + if accessright: + accessright=accessright[0].value + if str(accessright)=='institution': + tmp=dom.xpath("//meta/access-conditions/access/name") + if tmp: + accessright=getTextFromNode(tmp[0]) + + if not accessright: + accessright="" + + return accessright,getattr(self,'accessRight','') def changeAccessRightMD(self,accessright,RESPONSE=None): - """change the rights""" - + """change the rights - not user anymore""" + #TODO: check if method still needed params="accessright=%s"%accessright #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read() - ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read() + ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read() if RESPONSE is not None: @@ -586,7 +644,13 @@ class ECHO_resource(CatalogAware,Folder, def setAccessRightXML(self,accessright): """set accessright""" url=self.metalink - + accessrights=['MPIWG','free']#allowes rights + + if accessright =='': + """do nothing""" + return "" + + try: geturl="" for line in ECHO_helpers.urlopen(url).readlines(): @@ -602,48 +666,59 @@ class ECHO_resource(CatalogAware,Folder, except: return (None,"Cannot parse: "+url+"
"+geturl) - metanodes=dom.getElementsByTagName('access-conditions') + metamains=dom.getElementsByTagName('meta') + + if not metamains: + nodenew=dom.createElement('meta') + root.appendChild(nodenew) + metamain=nodenew + else: + metamain=metamains[0] + + + metanodes=metamain.getElementsByTagName('access-conditions') if not metanodes: nodenew=dom.createElement('access-conditions') - root.appendChild(nodenew) + metamain.appendChild(nodenew) metanode=nodenew else: metanode=metanodes[0] accesses=metanode.getElementsByTagName('access') - if not accesses: - nodenew2=dom.createElement('access') - metanode.appendChild(nodenew2) - metanode2=nodenew2 - else: - metanode2=accesses[0] - - internal=metanode.getElementsByTagName('internal') - - if internal: - metanode2.removeChild(internal[0]).unlink() + #delete old + if accesses: + metanode.removeChild(accesses[0]).unlink() - free=metanode.getElementsByTagName('free') + #create new + + nodenew2=dom.createElement('access') + metanode.appendChild(nodenew2) + metanode2=nodenew2 - if free: - metanode2.removeChild(internal[0]).unlink() - - - if accessright=='free': - nodenew3=dom.createElement('free') - metanode2.appendChild(nodenew3) - elif accessright=='mpiwg': - nodenew3=dom.createElement('internal') - nodenew4=dom.createElement('institution') - metanodetext=dom.createTextNode('mpiwg') + attribute=metanode2.getAttribute('type') + + if accessright=="free": + + metanode2.setAttribute('type','free') + + elif accessright.upper()=='MPIWG': + metanode2.setAttribute('type','institution') + nodenew4=dom.createElement('name') + metanodetext=dom.createTextNode('MPIWG') nodenew4.appendChild(metanodetext) - nodenew3.appendChild(nodenew4) - metanode2.appendChild(nodenew3) - - return dom.toxml().encode('utf-8') + nodenew2.appendChild(nodenew4) + #print dom.toxml().encode('utf-8') + string= encodeRPC(dom.toxml().encode('utf-8')) + + #TODO: make server configurable + server=xmlrpclib.Server("http://foxridge.mpiwg-berlin.mpg.de/server") + path=urlparse.urlparse(self.metalink)[2] + + server.writeMetaDataFile(path,string,"yes") + def setStartPageForm(self): """Form for changing the startpage""" @@ -778,9 +853,11 @@ class ECHO_resource(CatalogAware,Folder, params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix) - - ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read() - + try: + ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read() + except: + zLOG.LOG("ECHO_ressource (changeViewerTemplateSet)", zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2]) + zLOG.LOG("ECHO_ressource (changeViewerTemplateSet)", zLOG.ERROR,'http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))) #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params) # hack Pfad auf die Dokumente path=self.metalink @@ -789,22 +866,15 @@ class ECHO_resource(CatalogAware,Folder, path=re.sub('/index.meta','',path) - path=re.sub(self.REQUEST['SERVER_URL'],'',path) - path=re.sub('http://'+self.REQUEST['HTTP_HOST'],'',path) - - path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server - path=re.sub('http://foxridge.mpiwg-berlin.mpg.de:8080','',path) # falls foxridge als server - path=re.sub('http://foxridge.mpiwg-berlin.mpg.de','',path) # falls foxridge als server - - 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 - - return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines() - + #TODO: direct access to the file system necessary, fix that also xmlrpc to the server where the index file is stored is possible + parsedUrl=urlparse.urlparse(path) + path=parsedUrl[2] + + try: + return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines() + except: + zLOG.LOG("ECHO_Resource (changeViewerTemplateSet)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) + zLOG.LOG("ECHO_Resource (changeViewerTemplateSet)", zLOG.INFO,"http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path) if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -1113,8 +1183,9 @@ class ECHO_resource(CatalogAware,Folder, self.metaDataHash[self.getFieldTag(tags,field)]=self.REQUEST.form[self.getFieldTag(tags,field)] self.OSAS_meta[self.getFieldTag(tags,field)]=self.REQUEST.form['OSAS_%s'%self.getFieldTag(tags,field)] except: - """nothing""" + zLOG.LOG("ECHO_collection (changeECHO_resource_metadata)",zLOG.ERROR,"%s (%s)"%sys.exc_info()[0:2]) + print self.newMetaXML() ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read() @@ -1125,14 +1196,22 @@ class ECHO_resource(CatalogAware,Folder, def getMDValueSimpleSearchField(self): """returns value for simple search""" - return " ".join([self.getMDValue('title',generic="yes"), + + try: + return " ".join([self.getMDValue('title',generic="yes"), self.getMDValue('author',generic="yes"), - self.getMDValue('year',generic="yes"),self.title]) + self.getMDValue('year',generic="yes"),self.getTitle()]) + except: + + #zLOG.LOG(" ECHO_collection(getMDSimpleSearchField)",zLOG.INFO," ".join([self.getMDValue('title',generic="yes"), + # self.getMDValue('author',generic="yes"), + # self.getMDValue('year',generic="yes"),''])) + return "" def getMDValue(self,fieldNameTest,empty=None,generic=None): """get md values""" #TODO: cache mappinghash - + fieldName=None if generic: if self.contentType: @@ -1160,14 +1239,21 @@ class ECHO_resource(CatalogAware,Folder, if not empty: #FIXME: warum gibt es manchmal kein metadatahas try: - return self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) + + ret =self.metaDataHash.get(fieldName,'!!NOT USED HERE in Type: %s'%self.contentType) except: zLOG.LOG("ECHO (line 1069)",zLOG.ERROR,"no md hash for %s"%self.getId()) return "" else: - return self.metaDataHash.get(fieldNameTest,empty) + + ret= self.metaDataHash.get(fieldNameTest,empty) + + if type(ret) is StringType: + return ret.decode('utf-8') + else: + return ret getFieldValue=getMDValue #depricated @@ -1243,6 +1329,7 @@ class ECHO_resource(CatalogAware,Folder, {'label':'Change TemplateSets and Image Viewer','action':'changeViewerTemplateSetForm'}, {'label':'set/change startpage','action':'setStartPageForm'}, {'label':'Copy MD for indexing and search','action':'copySearchFields'}, + {'label':'Change AccessRights','action':'changeAccessRightForm'}, ) @@ -1291,7 +1378,6 @@ class ECHO_resource(CatalogAware,Folder, if not hasattr(self,'metaDataHash'): setattr(self,'metaDataHash',{}) self.metaDataHash[field]=value[0:] - def copySearchFields(self): """copys metadatafields to the object""" @@ -1405,7 +1491,7 @@ class ECHO_resource(CatalogAware,Folder, def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"): """Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" (metadict, error)=readMetadata(self.metalink) - + if back: self.REQUEST.SESSION['back']=back @@ -1421,17 +1507,19 @@ class ECHO_resource(CatalogAware,Folder, return zptFile(self, 'zpt/ECHO_getResourceMDErrorContentType.zpt')() - self.REQUEST.SESSION['metadict']=metadict - + #self.REQUEST.SESSION['metadict']=metadict - self.REQUEST.SESSION['diffs']=checkDiffs(self,self.REQUEST.SESSION['metadict']) - + self.REQUEST.SESSION['diffs']=checkDiffs(self,metadict) + + if template=="yes": + #pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/ECHO_resourceMD.zpt'),metadict=metadict).__of__(self) pt=zptFile(self, 'zpt/ECHO_resourceMD.zpt') - return pt() + + return pt(metadict=metadict) @@ -1541,16 +1629,12 @@ class ECHO_externalLink(Folder,ECHO_basi """template fuer content""" ret= ECHO_basis.content_html(self,'externalLink') + if type(ret) is StringType: + return ret.decode('utf-8') + else: + return ret - try: - return ret.encode('utf-8') - except: - try: - return ret.decode('latin-1') - except: - - return ret def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords): @@ -1712,6 +1796,7 @@ def manage_addECHO_link(self,id,title,la class ECHO_collection(CatalogAware, Folder, Persistent, Implicit, Cacheable,ECHO_basis): """ECHO Collection""" + management_page_charset="utf-8" security=ClassSecurityInfo() meta_type='ECHO_collection' default_catalog='resourceCatalog' @@ -1833,6 +1918,15 @@ class ECHO_collection(CatalogAware, Fold pt=zptFile(self, 'zpt/changeMetaDataLinkForm') pt.content_type="text/html" return pt() + + def changeAccessRightsCollectionForm(self,preselect=None): + """change access rights of all resources in this collection""" + + pt=zptFile(self, 'zpt/changeAccessRightsCollectionForm') + pt.content_type="text/html" + return pt(preselect=preselect) + + def changeAccessRightsCollection(self): """change""" ret="" @@ -1841,11 +1935,15 @@ class ECHO_collection(CatalogAware, Fold resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource']) for resource in resources: - try: - ret+=resource[1].getId()+" "+argv[resource[1].getId()]+"
" - resource[1].changeAccessRightMD(argv[resource[1].getId()]) - except: - pass + if argv.has_key(resource[1].getId()+'_xml'): + ret+=resource[1].getId()+" "+argv[resource[1].getId()+'_xml']+"
" + resource[1].setAccessRightXML(argv[resource[1].getId()+'_xml']) + resource[1].accessRight=argv[resource[1].getId()+'_xml'] + elif argv.has_key(resource[1].getId()+'_echo'): + ret+="only local:"+resource[1].getId()+" "+argv[resource[1].getId()+'_echo']+"
" + resource[1].accessRight=argv[resource[1].getId()+'_echo'] + else: + ret+="ERROR:" +resource[0] return ret def changeMetaDataLinkInCollection(self): @@ -2286,6 +2384,7 @@ class ECHO_collection(CatalogAware, Fold {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'}, {'label':'ImportCollection','action':'importCollection'}, {'label':'Copy MD for indexing and search','action':'copySearchFields'}, + {'label':'Change access rights', 'action':'changeAccessRightsCollectionForm'}, ) @@ -2382,15 +2481,11 @@ class ECHO_collection(CatalogAware, Fold #print "NN",argv ret = ECHO_basis.content_html(self,'collection') - try: - return ret.encode('utf-8') - except: - - try: - return ret.decode('latin-1') - except: - - return ret + if type(ret) is StringType: + return ret.decode('utf-8') + else: + return ret + def getCredits(self): """Ausgabe der credits""" @@ -2449,7 +2544,13 @@ class ECHO_collection(CatalogAware, Fold getSubCols = ECHO_helpers.getSubCols - + + def getSubcolsXMLRpc(self,searchSimple): + """simplesearch results suitable for xml rpc, gives back array objid,url""" + + return [x.absolute_url() for x in self.getSubCols(searchSimple=searchSimple)] + + Globals.InitializeClass(ECHO_collection) def manage_addECHO_collectionForm(self): @@ -2747,8 +2848,31 @@ class ECHO_root(Folder,Persistent,Implic security=ClassSecurityInfo() meta_type="ECHO_root" - + management_page_charset="utf-8" + getSubCols = ECHO_helpers.getSubCols + + manage_options=Folder.manage_options+( + {'label':'Main Config','action':'ECHO_copyright_configForm'}, + {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'}, + {'label':'Change Weights','action':'changeWeights'}, + {'label':'Generate from RDF','action':'generateFromRDFForm'}, + {'label':'update Resource Catalog','action':'updateResourceCatalog'}, + {'label':'Copy MD for indexing and search','action':'copySearchFields'}, +) + + + def copySearchFields(self,RESPONSE=None): + """copys < metadatafields to the object""" + resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1) + + for resource in resources: + + resource[1].copySearchFields() + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + def mod_re_sub(self,pattern,replace,string): """re.sub aus mod re zur Verfuegung stellen""" return re.sub(pattern,replace,string) @@ -2787,19 +2911,6 @@ class ECHO_root(Folder,Persistent,Implic if RESPONSE: RESPONSE.write("

ok

\n") - def printer(self,txt): - print txt - print txt[2] - print txt[2].getImageTag() - print "HO" - return txt[2].getImageTag() - - def printer2(self,txt): - print txt - - - def item2(self,txt): - return txt[2] def setLanguage(self,lang): """Set language cookie""" @@ -2814,6 +2925,7 @@ class ECHO_root(Folder,Persistent,Implic self.REQUEST.RESPONSE.setCookie('lang_exhibition',lang,path="/") self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']) + def getLanguage(self): """get language cookie""" lang= self.REQUEST.cookies.get('lang_exhibition','de') @@ -3003,17 +3115,7 @@ class ECHO_root(Folder,Persistent,Implic pt=zptFile(self, 'zpt/changeWeightForm') pt.content_type="text/html" return pt() - getSubCols = ECHO_helpers.getSubCols - - manage_options=Folder.manage_options+( - {'label':'Main Config','action':'ECHO_copyright_configForm'}, - {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'}, - {'label':'Change Weights','action':'changeWeights'}, - {'label':'Generate from RDF','action':'generateFromRDFForm'}, - -) - - + def reloadMetaDataFromStorageWarning(self,RESPONSE=None): """warning""" @@ -3069,7 +3171,7 @@ class ECHO_root(Folder,Persistent,Implic return ret def getValueFromClass(self,field,found): - """retattribute falss existing""" + """ret attribute if existing""" try: return getattr(found,field).decode('ascii','ignore') @@ -3542,7 +3644,46 @@ class ECHO_root(Folder,Persistent,Implic inst=self.ZopeFind(self.institutions, obj_ids=[id]) return inst + def updateResourceCatalog(self,REQUEST,RESPONSE): + """update ressource catalog""" + catalog=getattr(self,'resourceCatalog',None) + if not catalog: + return """

No resourceCatalog available

""" + + else: + class element: + def __init__(self,group,name): + self.group=group + self.name=name + catalog.manage_delObjects('author splitter') + #elements=[element('Stop Words',""" Don't remove stop words' """),element('Word Splitter','ECHO author splitter')] + elements=[element('Word Splitter','ECHO author splitter')] + manage_addLexicon(catalog,id="author splitter",elements=elements) + + return catalog.manage_catalogReindex(REQUEST,RESPONSE,'manage_main') + + + def checkMetaDataLinks(self,correct=None): + """check all metadatalinks and if correct is set change the servername to content.mpiwg-berlin.mpg.de""" + + self.REQUEST.RESPONSE.write("") + for resource in self.ZopeFind(self,obj_metatypes=['ECHO_resource'],search_sub=1): + metalink=resource[1].metalink + try: + url=urllib.urlopen(metalink) + except: + + self.REQUEST.RESPONSE.write("

ERROR (opening %s):"%resource[1].absolute_url() +" -- %s %s
"%sys.exc_info()[0:2]) + self.REQUEST.RESPONSE.write("-----------%s"%metalink) + + if correct: + urlparsed=[x for x in urlparse.urlparse(metalink)] + urlparsed[1]="content.mpiwg-berlin.mpg.de" + neu=urlparse.urlunparse(urlparsed) + resource[1].metalink=neu[0:] + self.REQUEST.RESPONSE.write("----------changed to:%s)"%neu) + def manage_addECHO_root(self,id,title,RESPONSE=None): """Add an ECHO_root""" self._setObject(id,ECHO_root(id,title))