--- ECHO_content/ECHO_resource.py 2009/04/14 16:31:27 1.3 +++ ECHO_content/ECHO_resource.py 2010/10/11 13:14:59 1.6 @@ -208,7 +208,7 @@ class ECHO_resource(CatalogAware,Folder, ret=getRDFDescription(self,self.link,urn=urn,ap=ap) - logging.debug("ret:"+repr(ret)) + return ret+self.createSubElementRDF(urn=urn) @@ -436,7 +436,7 @@ class ECHO_resource(CatalogAware,Folder, """create ImageUrl""" - resourcepath=readFieldFromXML(self.metalink,'resource','archive-path') + resourcepath=readFieldFromXML_xpath(self.metalink,'//resource/archive-path') digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix') images=readFieldFromXML(self.metalink,'texttool','image') @@ -455,7 +455,7 @@ class ECHO_resource(CatalogAware,Folder, def copyTitleToInfoXML(self,RESPONSE=None): """copy title from the resource""" presentationXML=readFieldFromXML(self.metalink,'texttool','presentation') - resourcepath=readFieldFromXML(self.metalink,'resource','archive-path') + resourcepath=readFieldFromXML_xpath(self.metalink,'//resource/archive-path') if (not presentationXML) or (not resourcepath): if RESPONSE: RESPONSE.write("Error: %s\n"%self.getId()) @@ -654,25 +654,16 @@ class ECHO_resource(CatalogAware,Folder, def getArchivePathFromMetadata(self): try: - fh=ECHO_helpers.urlopen(self.metalink) - dom=xml.dom.minidom.parse(fh) - archivePath=dom.getElementsByTagName('archive-path') - text = getText(archivePath[0].childNodes) - return text + archivePath=readFieldFromXML_xpath(self.metalink,"//resource/archive-path") + return archivePath except: return "" def getImageView(self,noredirect=None,onlyPath=None): """getImages; give Imageviewr and if somthing goes wrong.""" try: - fh=ECHO_helpers.urlopen(self.metalink) - dom=xml.dom.minidom.parse(fh) - texttools=dom.getElementsByTagName('texttool') - text=texttools[0].getElementsByTagName('image') - imagetemp=getText(text[0].childNodes) - - text=dom.getElementsByTagName('archive-path') - archivepath=getText(text[0].childNodes) + archivePath=readFieldFromXML_xpath(self.metalink,"//resource/archive-path") + archivepath=re.sub('/mpiwg/online/','',archivepath) imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp fh.close() @@ -1090,7 +1081,7 @@ class ECHO_resource(CatalogAware,Folder, ret= self.metaDataHash.get(fieldNameTest,empty) - + return unicodify(ret) getFieldValue=getMDValue #depricated @@ -1215,7 +1206,8 @@ class ECHO_resource(CatalogAware,Folder, def getMetaDataHash(self): """md hash""" - return self.metaDataHash + + return getattr(self,'metaDataHash',{}) def setFieldValue(self,field,value): """get value""" @@ -1227,11 +1219,20 @@ class ECHO_resource(CatalogAware,Folder, def copySearchFields(self): """copys metadatafields to the object""" - fields=['author','title','year'] + # Zunaechst die gnerischen felder + fields=['author','title','year'] for field in fields: - setattr(self,'MD_'+field,self.getMDValue(field,generic="yes")) - + setattr(self,'MD_'+field,self.getMDValue(field,generic="yes")) + + # jetzt die spezifischen + for field in self.getMetaDataHash().keys(): + if not (field in fields): + logging.debug("ECHO_resource (copySearchFields) mapping: "+field) + setattr(self,'MD_'+field,self.getMDValue(field)) + + + def findLabelsFromMapping(self,referenceType): """gib hash mit label -> generic zurueck""" @@ -1249,15 +1250,17 @@ class ECHO_resource(CatalogAware,Folder, fieldlist=self.standardMD.fieldList tags=self.findTagsFromMapping(normalizeCt(self.contentType)) + logging.debug("ECHO_resource(findLabelsFromMapping)"+repr(tags)) self.referencetypes=tags[2] for referenceTypeF in self.referencetypes: - + logging.debug("--- compare"+normalizeCt(referenceTypeF[1].title)+normalizeCt(referenceType.lower())) if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): - + try: bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields referenceType=referenceTypeF[1].title + logging.debug("------fields:"+repr(fields)) except: bibdata[referenceType]=referenceTypeF[1].fields @@ -1266,7 +1269,7 @@ class ECHO_resource(CatalogAware,Folder, fields=bibdata[referenceType] for field in fieldlist: retdata[field]=referenceTypeF[1].getValue(field)[1] - + return retdata,fieldlist,temp,fields def findTagsFromMapping(self,referenceType): @@ -1296,7 +1299,8 @@ class ECHO_resource(CatalogAware,Folder, bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields referenceType=referenceTypeF[1].title except: - bibdata[referenceType]=referenceTypeF[1].fields + logging.debug("Error in ECHOresource(findTagsFromMapping): %s %s"%(sys.exc_info[0],sys.exc_info[1])) + bibdata[referenceType]=referenceTypeF[1].fields bibdata['data']=referenceTypeF[1] fields=bibdata[referenceType] for field in fieldlist: @@ -1338,7 +1342,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