--- documentViewer/documentViewer.py 2011/07/20 19:36:57 1.175.2.7 +++ documentViewer/documentViewer.py 2011/07/27 19:09:44 1.175.2.9 @@ -102,9 +102,12 @@ def getParentDir(path): """returns pathname shortened by one""" return '/'.join(path.split('/')[0:-1]) -def normalizeBibtype(bt): +def normalizeBibField(bt, underscore=True): """returns normalised bib type for looking up mappings""" bt = bt.strip().replace(' ', '-').lower() + if underscore: + bt = bt.replace('_', '-') + return bt def getBibdataFromDom(dom): @@ -114,13 +117,14 @@ def getBibdataFromDom(dom): if bib is not None: # put type in @type type = bib.get('type') - bibinfo['@type'] = normalizeBibtype(type) + bibinfo['@type'] = normalizeBibField(type) # put all subelements in dict for e in bib: - bibinfo[e.tag] = getText(e) + bibinfo[normalizeBibField(e.tag)] = getText(e) return bibinfo + ## ## documentViewer class ## @@ -577,22 +581,23 @@ class documentViewer(Folder): docinfo['indexMetaPath']=self.getIndexMetaPath(path); logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path)) - # put all raw bib fields in dict "bib" - bib = getBibdataFromDom(dom) - docinfo['bib'] = bib - bibtype = bib.get('@type', None) - docinfo['bib_type'] = bibtype - if bibtype: - # also store standard mapped metadata for convenience - try: - stdbib = self.metadata.getStdMappedHash(bib) - docinfo['std_bib'] = stdbib - docinfo['author'] = stdbib['author'] - docinfo['title'] = stdbib['title'] - docinfo['year'] = stdbib['year'] - except: - pass - + # try to get MetaDataFolder + metadata = getattr(self, 'metadata') + if metadata is not None: + # put all raw bib fields in dict "bib" + bib = metadata.getBibdataFromDom(dom) + docinfo['bib'] = bib + bibtype = bib.get('@type', None) + docinfo['bib_type'] = bibtype + # also store DC metadata for convenience + dc = metadata.getDCMappedData(bib) + docinfo['creator'] = dc.get('creator',None) + docinfo['title'] = dc.get('title',None) + docinfo['date'] = dc.get('date',None) + else: + logging.error("MetaDataFolder 'metadata' not found!") + #TODO: remove + bib = getBibdataFromDom(dom) return docinfo