version 1.2, 2008/12/17 12:12:27
|
version 1.7, 2012/01/03 13:02:31
|
Line 204 class ECHO_resource(CatalogAware,Folder,
|
Line 204 class ECHO_resource(CatalogAware,Folder,
|
|
|
def getRDF(self,urn=None): |
def getRDF(self,urn=None): |
"""rdf""" |
"""rdf""" |
ret=getRDFDescription(self,self.link,urn=urn) |
ap = self.getArchivePathFromMetadata() |
|
|
|
|
|
ret=getRDFDescription(self,self.link,urn=urn,ap=ap) |
|
|
return ret+self.createSubElementRDF(urn=urn) |
return ret+self.createSubElementRDF(urn=urn) |
|
|
|
|
Line 432 class ECHO_resource(CatalogAware,Folder,
|
Line 436 class ECHO_resource(CatalogAware,Folder,
|
"""create ImageUrl""" |
"""create ImageUrl""" |
|
|
|
|
resourcepath=readFieldFromXML(self.metalink,'resource','archive-path') |
resourcepath=readFieldFromXML_xpath(self.metalink,'//resource/archive-path') |
|
|
digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix') |
digiliburlprefix=readFieldFromXML(self.metalink,'texttool','digiliburlprefix') |
images=readFieldFromXML(self.metalink,'texttool','image') |
images=readFieldFromXML(self.metalink,'texttool','image') |
Line 451 class ECHO_resource(CatalogAware,Folder,
|
Line 455 class ECHO_resource(CatalogAware,Folder,
|
def copyTitleToInfoXML(self,RESPONSE=None): |
def copyTitleToInfoXML(self,RESPONSE=None): |
"""copy title from the resource""" |
"""copy title from the resource""" |
presentationXML=readFieldFromXML(self.metalink,'texttool','presentation') |
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 (not presentationXML) or (not resourcepath): |
if RESPONSE: |
if RESPONSE: |
RESPONSE.write("Error: %s\n"%self.getId()) |
RESPONSE.write("Error: %s\n"%self.getId()) |
Line 617 class ECHO_resource(CatalogAware,Folder,
|
Line 621 class ECHO_resource(CatalogAware,Folder,
|
#logger("ECHO Fulltext",logging.INFO,"opened %s"%self.metalink) |
#logger("ECHO Fulltext",logging.INFO,"opened %s"%self.metalink) |
dom=xml.dom.minidom.parse(fh) |
dom=xml.dom.minidom.parse(fh) |
texttools=dom.getElementsByTagName('texttool') |
texttools=dom.getElementsByTagName('texttool') |
|
|
|
text=texttools[0].getElementsByTagName('text-url-path') #pfad auf text im neuen system |
|
logging.debug(text); |
|
if (text is not None) and len(text)>0: |
|
texturl=getText(text[0].childNodes) |
|
textBasisUrl=None |
|
if hasattr(self,"getFullTextBasisUrl"): |
|
textBasisUrl=self.getFullTextBasisUrl() |
|
else: #default |
|
textBasisUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=%s" |
|
#Beispiel http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=/archimedes/la/achil_propo_087_la_1545.xml |
|
logging.debug(textBasisUrl); |
|
texturl=textBasisUrl%texturl |
|
else: |
text=texttools[0].getElementsByTagName('text') |
text=texttools[0].getElementsByTagName('text') |
texturl=getText(text[0].childNodes) |
texturl=getText(text[0].childNodes) |
|
|
Line 648 class ECHO_resource(CatalogAware,Folder,
|
Line 666 class ECHO_resource(CatalogAware,Folder,
|
"""gibt pfad zum image aus""" |
"""gibt pfad zum image aus""" |
return self.getImageView(noredirect="yes",onlyPath="yes") |
return self.getImageView(noredirect="yes",onlyPath="yes") |
|
|
|
def getArchivePathFromMetadata(self): |
|
try: |
|
archivePath=readFieldFromXML_xpath(self.metalink,"//resource/archive-path") |
|
return archivePath |
|
except: |
|
return "" |
|
|
def getImageView(self,noredirect=None,onlyPath=None): |
def getImageView(self,noredirect=None,onlyPath=None): |
"""getImages; give Imageviewr and <error></error> if somthing goes wrong.""" |
"""getImages; give Imageviewr and <error></error> if somthing goes wrong.""" |
try: |
try: |
fh=ECHO_helpers.urlopen(self.metalink) |
archivePath=readFieldFromXML_xpath(self.metalink,"//resource/archive-path") |
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=re.sub('/mpiwg/online/','',archivepath) |
archivepath=re.sub('/mpiwg/online/','',archivepath) |
imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp |
imageurl="http://echo.mpiwg-berlin.mpg.de/zogilib?fn="+archivepath+"/"+imagetemp |
fh.close() |
fh.close() |
Line 1058 class ECHO_resource(CatalogAware,Folder,
|
Line 1077 class ECHO_resource(CatalogAware,Folder,
|
|
|
|
|
#noch nicht gecached |
#noch nicht gecached |
if not fieldName and hasattr(self.standardMD,ct): |
if not fieldName and hasattr(self.getStandardMD(),ct): |
fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0] |
fieldName=getattr(self.getStandardMD(),ct).generateMappingHash()[fieldNameTest][0] |
self._v_mapHash[ct][fieldNameTest]=fieldName |
self._v_mapHash[ct][fieldNameTest]=fieldName |
if not fieldName: |
if not fieldName: |
fieldName=fieldNameTest |
fieldName=fieldNameTest |
Line 1201 class ECHO_resource(CatalogAware,Folder,
|
Line 1220 class ECHO_resource(CatalogAware,Folder,
|
|
|
def getMetaDataHash(self): |
def getMetaDataHash(self): |
"""md hash""" |
"""md hash""" |
return self.metaDataHash |
|
|
return getattr(self,'metaDataHash',{}) |
|
|
def setFieldValue(self,field,value): |
def setFieldValue(self,field,value): |
"""get value""" |
"""get value""" |
Line 1213 class ECHO_resource(CatalogAware,Folder,
|
Line 1233 class ECHO_resource(CatalogAware,Folder,
|
|
|
def copySearchFields(self): |
def copySearchFields(self): |
"""copys metadatafields to the object""" |
"""copys metadatafields to the object""" |
fields=['author','title','year'] |
|
|
|
|
# Zunaechst die gnerischen felder |
|
fields=['author','title','year'] |
for field in fields: |
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 is None) and (not (field in fields)): |
|
logging.debug("ECHO_resource (copySearchFields) mapping: "+field) |
|
logging.debug("ECHO_resource (copySearchFields) mapping value : "+self.getMDValue(field)) |
|
setattr(self,'MD_'+field,self.getMDValue(field)) |
|
|
|
|
|
|
|
|
def findLabelsFromMapping(self,referenceType): |
def findLabelsFromMapping(self,referenceType): |
"""gib hash mit label -> generic zurueck""" |
"""gib hash mit label -> generic zurueck""" |
#return {},[] |
#return {},[] |
|
|
temp=self.ZopeFind(self.standardMD) |
temp=self.ZopeFind(self.getStandardMD()) |
|
|
if referenceType=="": |
if referenceType=="": |
referenceType="book" |
referenceType="book" |
Line 1232 class ECHO_resource(CatalogAware,Folder,
|
Line 1263 class ECHO_resource(CatalogAware,Folder,
|
bibdata={} |
bibdata={} |
retdata={} |
retdata={} |
fields=[] |
fields=[] |
fieldlist=self.standardMD.fieldList |
fieldlist=self.getStandardMD().fieldList |
|
|
tags=self.findTagsFromMapping(normalizeCt(self.contentType)) |
tags=self.findTagsFromMapping(normalizeCt(self.contentType)) |
|
logging.debug("ECHO_resource(findLabelsFromMapping)"+repr(tags)) |
self.referencetypes=tags[2] |
self.referencetypes=tags[2] |
for referenceTypeF in self.referencetypes: |
for referenceTypeF in self.referencetypes: |
|
|
|
logging.debug("--- compare"+normalizeCt(referenceTypeF[1].title)+normalizeCt(referenceType.lower())) |
if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): |
if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): |
|
|
try: |
try: |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].getUsedFields() |
referenceType=referenceTypeF[1].title |
referenceType=referenceTypeF[1].title |
|
logging.debug("------fields:"+repr(bibdata[referenceTypeF[1].title])) |
except: |
except: |
bibdata[referenceType]=referenceTypeF[1].fields |
bibdata[referenceType]=referenceTypeF[1].getUsedFields() |
|
|
|
|
bibdata['data']=referenceTypeF[1] |
bibdata['data']=referenceTypeF[1] |
Line 1262 class ECHO_resource(CatalogAware,Folder,
|
Line 1295 class ECHO_resource(CatalogAware,Folder,
|
if referenceType=="": |
if referenceType=="": |
referenceType="book" |
referenceType="book" |
|
|
temp = self.ZopeFind(self.standardMD)[0:] |
temp = self.ZopeFind(self.getStandardMD())[0:] |
|
|
|
|
#self.referencetypes=temp[0:] |
#self.referencetypes=temp[0:] |
Line 1272 class ECHO_resource(CatalogAware,Folder,
|
Line 1305 class ECHO_resource(CatalogAware,Folder,
|
|
|
bibdata={} |
bibdata={} |
retdata={} |
retdata={} |
fieldlist=self.standardMD.fieldList |
fieldlist=self.getStandardMD().fieldList |
fields=[] |
fields=[] |
for referenceTypeF in temp: |
for referenceTypeF in temp: |
#print referenceType |
#print referenceType |
|
|
if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): |
if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): |
try: |
try: |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields |
bibdata[referenceTypeF[1].title]=referenceTypeF[1].getUsedFields() |
referenceType=referenceTypeF[1].title |
referenceType=referenceTypeF[1].title |
except: |
except: |
bibdata[referenceType]=referenceTypeF[1].fields |
logging.debug("Error in ECHOresource(findTagsFromMapping): %s %s"%(sys.exc_info()[0],sys.exc_info()[1])) |
|
logging.debug(referenceTypeF) |
|
#TODO:CCCC |
|
bibdata[referenceType]=referenceTypeF[1].getUsedFields() |
bibdata['data']=referenceTypeF[1] |
bibdata['data']=referenceTypeF[1] |
fields=bibdata[referenceType] |
fields=bibdata[referenceType] |
for field in fieldlist: |
for field in fieldlist: |
Line 1296 class ECHO_resource(CatalogAware,Folder,
|
Line 1332 class ECHO_resource(CatalogAware,Folder,
|
"""copy MD von Index_meta to the echo_resource""" |
"""copy MD von Index_meta to the echo_resource""" |
|
|
(metadict, error)=readMetadata(self.metalink) |
(metadict, error)=readMetadata(self.metalink) |
|
logging.debug(metadict) |
|
|
|
|
self.metaDataHash={} |
self.metaDataHash={} |
if not error=="": #Fehler beim Auslesen des Metafiles |
if not error=="": #Fehler beim Auslesen des Metafiles |
Line 1324 class ECHO_resource(CatalogAware,Folder,
|
Line 1359 class ECHO_resource(CatalogAware,Folder,
|
def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"): |
def ECHO_getResourceMD(self,template="yes",back=None,overwrite="no"): |
"""Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" |
"""Einlesen der Metadaten und Anlegen dieser Metadaten als Informationen zur Resource""" |
(metadict, error)=readMetadata(self.metalink) |
(metadict, error)=readMetadata(self.metalink) |
|
logging.debug("METADICT:") |
|
logging.debug(metadict) |
if back: |
if back: |
self.REQUEST.SESSION['back']=back |
self.REQUEST.SESSION['back']=back |
|
|
Line 1422 class ECHO_resource(CatalogAware,Folder,
|
Line 1458 class ECHO_resource(CatalogAware,Folder,
|
|
|
def generate_label(self): |
def generate_label(self): |
"""Erzeugt_standard_Label aus Template""" |
"""Erzeugt_standard_Label aus Template""" |
pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower()) |
|
|
|
self.label=pt()[0:] |
templateName="label_template_"+normalizeCt(self.contentType).lower(); |
|
if hasattr(self, templateName): |
|
pt=getattr(self,templateName) |
|
self.title=pt()[0:] |
return pt() |
return pt() |
|
else: |
|
pt=getattr(self.metadata,templateName) |
|
|
|
mdHash={} |
|
#mdHash={"author":self.getMDValue('author'),"title":self.getMDValue('title'),"year":self.MD_year} |
|
#logging.debug(mdHash) |
|
logging.debug("new format for template") |
|
fields=['author','title','year'] |
|
|
|
for field in fields: |
|
mdHash[field]=self.getMDValue(field); |
|
|
|
# jetzt die spezifischen |
|
for field in self.getMetaDataHash().keys(): |
|
|
|
if (not field is None) and (not (field in fields)): |
|
|
|
logging.debug(field) |
|
mdHash[field]=self.getMDValue(field); |
|
|
|
|
|
self.title=pt(md=mdHash)[0:] |
|
return pt(md=mdHash)[0:] |
|
|
|
|
|
|
|
|
security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination |
security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination |
|
|
def generate_title(self,RESPONSE=None): |
def generate_title(self,RESPONSE=None): |
"""Erzeugt_standard_Label aus Template""" |
"""Erzeugt_standard_Label aus Template""" |
pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower()) |
|
|
|
self.title=pt()[0:] |
|
|
|
|
templateName="label_template_"+normalizeCt(self.contentType).lower(); |
|
if hasattr(self, templateName): |
|
pt=getattr(self,templateName) |
|
self.title=pt()[0:] |
return pt() |
return pt() |
|
else: |
|
pt=getattr(self.metadata,templateName) |
|
|
|
mdHash={} |
|
#mdHash={"author":self.getMDValue('author'),"title":self.getMDValue('title'),"year":self.MD_year} |
|
#logging.debug(mdHash) |
|
logging.debug("new format for template") |
|
fields=['author','title','year'] |
|
|
|
for field in fields: |
|
mdHash[field]=self.getMDValue(field); |
|
|
|
# jetzt die spezifischen |
|
for field in self.getMetaDataHash().keys(): |
|
|
|
if (not field is None) and (not (field in fields)): |
|
|
|
logging.debug(field) |
|
mdHash[field]=self.getMDValue(field); |
|
|
|
|
|
self.title=pt(md=mdHash)[0:] |
|
return pt(md=mdHash)[0:] |
|
|
|
|
|
|
|
|
Globals.InitializeClass(ECHO_resource) |
Globals.InitializeClass(ECHO_resource) |
|
|