--- ECHO_content/ECHO_resource.py 2010/10/11 13:14:59 1.6 +++ ECHO_content/ECHO_resource.py 2012/01/03 13:02:31 1.7 @@ -621,8 +621,22 @@ class ECHO_resource(CatalogAware,Folder, #logger("ECHO Fulltext",logging.INFO,"opened %s"%self.metalink) dom=xml.dom.minidom.parse(fh) texttools=dom.getElementsByTagName('texttool') - text=texttools[0].getElementsByTagName('text') - texturl=getText(text[0].childNodes) + + 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') + texturl=getText(text[0].childNodes) #logger("ECHO Fulltext",logging.INFO,"found %s"%texturl) fh.close() @@ -1063,8 +1077,8 @@ class ECHO_resource(CatalogAware,Folder, #noch nicht gecached - if not fieldName and hasattr(self.standardMD,ct): - fieldName=getattr(self.standardMD,ct).generateMappingHash()[fieldNameTest][0] + if not fieldName and hasattr(self.getStandardMD(),ct): + fieldName=getattr(self.getStandardMD(),ct).generateMappingHash()[fieldNameTest][0] self._v_mapHash[ct][fieldNameTest]=fieldName if not fieldName: fieldName=fieldNameTest @@ -1227,8 +1241,10 @@ class ECHO_resource(CatalogAware,Folder, # jetzt die spezifischen for field in self.getMetaDataHash().keys(): - if not (field in fields): + + 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)) @@ -1238,7 +1254,7 @@ class ECHO_resource(CatalogAware,Folder, """gib hash mit label -> generic zurueck""" #return {},[] - temp=self.ZopeFind(self.standardMD) + temp=self.ZopeFind(self.getStandardMD()) if referenceType=="": referenceType="book" @@ -1247,7 +1263,7 @@ class ECHO_resource(CatalogAware,Folder, bibdata={} retdata={} fields=[] - fieldlist=self.standardMD.fieldList + fieldlist=self.getStandardMD().fieldList tags=self.findTagsFromMapping(normalizeCt(self.contentType)) logging.debug("ECHO_resource(findLabelsFromMapping)"+repr(tags)) @@ -1258,11 +1274,11 @@ class ECHO_resource(CatalogAware,Folder, if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): try: - bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + bibdata[referenceTypeF[1].title]=referenceTypeF[1].getUsedFields() referenceType=referenceTypeF[1].title - logging.debug("------fields:"+repr(fields)) + logging.debug("------fields:"+repr(bibdata[referenceTypeF[1].title])) except: - bibdata[referenceType]=referenceTypeF[1].fields + bibdata[referenceType]=referenceTypeF[1].getUsedFields() bibdata['data']=referenceTypeF[1] @@ -1279,7 +1295,7 @@ class ECHO_resource(CatalogAware,Folder, if referenceType=="": referenceType="book" - temp = self.ZopeFind(self.standardMD)[0:] + temp = self.ZopeFind(self.getStandardMD())[0:] #self.referencetypes=temp[0:] @@ -1289,18 +1305,20 @@ class ECHO_resource(CatalogAware,Folder, bibdata={} retdata={} - fieldlist=self.standardMD.fieldList + fieldlist=self.getStandardMD().fieldList fields=[] for referenceTypeF in temp: #print referenceType if normalizeCt(referenceTypeF[1].title) == normalizeCt(referenceType.lower()): try: - bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields + bibdata[referenceTypeF[1].title]=referenceTypeF[1].getUsedFields() referenceType=referenceTypeF[1].title except: - logging.debug("Error in ECHOresource(findTagsFromMapping): %s %s"%(sys.exc_info[0],sys.exc_info[1])) - 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] fields=bibdata[referenceType] for field in fieldlist: @@ -1314,8 +1332,7 @@ class ECHO_resource(CatalogAware,Folder, """copy MD von Index_meta to the echo_resource""" (metadict, error)=readMetadata(self.metalink) - - + logging.debug(metadict) self.metaDataHash={} if not error=="": #Fehler beim Auslesen des Metafiles @@ -1342,7 +1359,8 @@ 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) - + logging.debug("METADICT:") + logging.debug(metadict) if back: self.REQUEST.SESSION['back']=back @@ -1440,20 +1458,76 @@ class ECHO_resource(CatalogAware,Folder, def generate_label(self): """Erzeugt_standard_Label aus Template""" - pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower()) - - self.label=pt()[0:] - return pt() + + templateName="label_template_"+normalizeCt(self.contentType).lower(); + if hasattr(self, templateName): + pt=getattr(self,templateName) + self.title=pt()[0:] + 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)): - security.declarePublic('generate_title') # has to be change, presentlyset because of OSAS koordination + 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, presently set because of OSAS koordination def generate_title(self,RESPONSE=None): """Erzeugt_standard_Label aus Template""" - pt=getattr(self,"label_template_"+normalizeCt(self.contentType).lower()) + + + templateName="label_template_"+normalizeCt(self.contentType).lower(); + if hasattr(self, templateName): + pt=getattr(self,templateName) + self.title=pt()[0:] + 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)): - self.title=pt()[0:] + logging.debug(field) + mdHash[field]=self.getMDValue(field); + + + self.title=pt(md=mdHash)[0:] + return pt(md=mdHash)[0:] + + - return pt() Globals.InitializeClass(ECHO_resource)