version 1.175.2.8, 2011/07/26 18:09:26
|
version 1.175.2.10, 2011/07/28 13:00:07
|
Line 102 def getParentDir(path):
|
Line 102 def getParentDir(path):
|
"""returns pathname shortened by one""" |
"""returns pathname shortened by one""" |
return '/'.join(path.split('/')[0:-1]) |
return '/'.join(path.split('/')[0:-1]) |
|
|
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): |
|
"""returns dict with all elements from bib-tag""" |
|
bibinfo = {} |
|
bib = dom.find(".//meta/bib") |
|
if bib is not None: |
|
# put type in @type |
|
type = bib.get('type') |
|
bibinfo['@type'] = normalizeBibField(type) |
|
# put all subelements in dict |
|
for e in bib: |
|
bibinfo[normalizeBibField(e.tag)] = getText(e) |
|
|
|
return bibinfo |
|
|
|
|
|
## |
## |
## documentViewer class |
## documentViewer class |
Line 137 class documentViewer(Folder):
|
Line 115 class documentViewer(Folder):
|
{'label':'main config','action':'changeDocumentViewerForm'}, |
{'label':'main config','action':'changeDocumentViewerForm'}, |
) |
) |
|
|
|
metadataService = None |
|
"""MetaDataFolder instance""" |
|
|
# templates and forms |
# templates and forms |
viewer_main = PageTemplateFile('zpt/viewer_main', globals()) |
viewer_main = PageTemplateFile('zpt/viewer_main', globals()) |
toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals()) |
toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals()) |
Line 155 class documentViewer(Folder):
|
Line 136 class documentViewer(Folder):
|
|
|
|
|
thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals()) |
thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals()) |
security.declareProtected('View management screens','changeDocumentViewerForm') |
|
changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) |
|
|
|
|
|
def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"): |
def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"): |
Line 179 class documentViewer(Folder):
|
Line 158 class documentViewer(Folder):
|
templateFolder._setObject('fulltextclient',textServer) |
templateFolder._setObject('fulltextclient',textServer) |
except Exception, e: |
except Exception, e: |
logging.error("Unable to create MpdlXmlTextServer for fulltextclient: "+str(e)) |
logging.error("Unable to create MpdlXmlTextServer for fulltextclient: "+str(e)) |
|
|
try: |
try: |
from Products.zogiLib.zogiLib import zogiLib |
from Products.zogiLib.zogiLib import zogiLib |
zogilib = zogiLib(id="zogilib", title="zogilib for docuviewer", dlServerURL=imageScalerUrl, layout="book") |
zogilib = zogiLib(id="zogilib", title="zogilib for docuviewer", dlServerURL=imageScalerUrl, layout="book") |
Line 187 class documentViewer(Folder):
|
Line 167 class documentViewer(Folder):
|
except Exception, e: |
except Exception, e: |
logging.error("Unable to create zogiLib for zogilib: "+str(e)) |
logging.error("Unable to create zogiLib for zogilib: "+str(e)) |
|
|
|
try: |
|
# assume MetaDataFolder instance is called metadata |
|
self.metadataService = getattr(self, 'metadata') |
|
except Exception, e: |
|
logging.error("Unable to find MetaDataFolder 'metadata': "+str(e)) |
|
|
|
|
# proxy text server methods to fulltextclient |
# proxy text server methods to fulltextclient |
def getTextPage(self, **args): |
def getTextPage(self, **args): |
Line 581 class documentViewer(Folder):
|
Line 567 class documentViewer(Folder):
|
docinfo['indexMetaPath']=self.getIndexMetaPath(path); |
docinfo['indexMetaPath']=self.getIndexMetaPath(path); |
|
|
logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path)) |
logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path)) |
|
if self.metadataService is not None: |
# put all raw bib fields in dict "bib" |
# put all raw bib fields in dict "bib" |
bib = getBibdataFromDom(dom) |
bib = self.metadataService.getBibData(dom=dom) |
docinfo['bib'] = bib |
docinfo['bib'] = bib |
bibtype = bib.get('@type', None) |
bibtype = bib.get('@type', None) |
docinfo['bib_type'] = bibtype |
docinfo['bib_type'] = bibtype |
if bibtype: |
# also store DC metadata for convenience |
# also store standard mapped metadata for convenience |
dc = self.metadataService.getDCMappedData(bib) |
try: |
docinfo['creator'] = dc.get('creator',None) |
stdbib = self.metadata.getStdMappedHash(bib) |
docinfo['title'] = dc.get('title',None) |
docinfo['std_bib'] = stdbib |
docinfo['date'] = dc.get('date',None) |
docinfo['author'] = stdbib['author'] |
else: |
docinfo['title'] = stdbib['title'] |
logging.error("MetadataService not found!") |
docinfo['year'] = stdbib['year'] |
|
except: |
|
pass |
|
|
|
return docinfo |
return docinfo |
|
|
|
|
Line 615 class documentViewer(Folder):
|
Line 598 class documentViewer(Folder):
|
logging.debug("documentViewer docinfo[name] %s"%docinfo['name']) |
logging.debug("documentViewer docinfo[name] %s"%docinfo['name']) |
return docinfo |
return docinfo |
|
|
|
|
def getDocinfoFromTextTool(self, url, dom=None, docinfo=None): |
def getDocinfoFromTextTool(self, url, dom=None, docinfo=None): |
"""parse texttool tag in index meta""" |
"""parse texttool tag in index meta""" |
logging.debug("documentViewer (getdocinfofromtexttool) url: %s" % (url)) |
logging.debug("documentViewer (getdocinfofromtexttool) url: %s" % (url)) |
Line 625 class documentViewer(Folder):
|
Line 609 class documentViewer(Folder):
|
if dom is None: |
if dom is None: |
dom = self.getDomFromIndexMeta(url) |
dom = self.getDomFromIndexMeta(url) |
|
|
|
texttool = self.metadata.getTexttoolData(dom=dom) |
|
|
archivePath = None |
archivePath = None |
archiveName = None |
archiveName = None |
|
|
Line 649 class documentViewer(Folder):
|
Line 635 class documentViewer(Folder):
|
# we balk without archive-path |
# we balk without archive-path |
raise IOError("Missing archive-path (for text-tool) in %s" % (url)) |
raise IOError("Missing archive-path (for text-tool) in %s" % (url)) |
|
|
imageDir = getText(dom.find(".//texttool/image")) |
imageDir = texttool.get('image', None) |
|
|
if not imageDir: |
if not imageDir: |
# we balk with no image tag / not necessary anymore because textmode is now standard |
# we balk with no image tag / not necessary anymore because textmode is now standard |
Line 668 class documentViewer(Folder):
|
Line 654 class documentViewer(Folder):
|
|
|
docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + imageDir |
docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + imageDir |
|
|
viewerUrl = getText(dom.find(".//texttool/digiliburlprefix")) |
viewerUrl = texttool.get('digiliburlprefix', None) |
if viewerUrl: |
if viewerUrl: |
docinfo['viewerURL'] = viewerUrl |
docinfo['viewerURL'] = viewerUrl |
|
|
# old style text URL |
# old style text URL |
textUrl = getText(dom.find(".//texttool/text")) |
textUrl = texttool.get('text', None) |
if textUrl: |
if textUrl: |
if urlparse.urlparse(textUrl)[0] == "": #keine url |
if urlparse.urlparse(textUrl)[0] == "": #keine url |
textUrl = os.path.join(archivePath, textUrl) |
textUrl = os.path.join(archivePath, textUrl) |
Line 684 class documentViewer(Folder):
|
Line 670 class documentViewer(Folder):
|
docinfo['textURL'] = textUrl |
docinfo['textURL'] = textUrl |
|
|
# new style text-url-path |
# new style text-url-path |
textUrl = getText(dom.find(".//texttool/text-url-path")) |
textUrl = texttool.get('text-url-path', None) |
if textUrl: |
if textUrl: |
docinfo['textURLPath'] = textUrl |
docinfo['textURLPath'] = textUrl |
textUrlkurz = string.split(textUrl, ".")[0] |
textUrlkurz = string.split(textUrl, ".")[0] |
Line 693 class documentViewer(Folder):
|
Line 679 class documentViewer(Folder):
|
# text-only, no page images |
# text-only, no page images |
#docinfo = self.getNumTextPages(docinfo) |
#docinfo = self.getNumTextPages(docinfo) |
|
|
|
# get bib info |
presentationUrl = getText(dom.find(".//texttool/presentation")) |
|
docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get info von bib tag |
docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get info von bib tag |
# TODO: is this needed here? |
# TODO: is this needed here? |
docinfo = self.getNameFromIndexMeta(url, docinfo=docinfo, dom=dom) |
docinfo = self.getNameFromIndexMeta(url, docinfo=docinfo, dom=dom) |
|
|
|
# TODO: what to do with presentation? |
|
presentationUrl = texttool.get('presentation', None) |
if presentationUrl: # ueberschreibe diese durch presentation informationen |
if presentationUrl: # ueberschreibe diese durch presentation informationen |
# presentation url ergiebt sich ersetzen von index.meta in der url der fuer die Metadaten |
# presentation url ergiebt sich ersetzen von index.meta in der url der fuer die Metadaten |
# durch den relativen Pfad auf die presentation infos |
# durch den relativen Pfad auf die presentation infos |
Line 711 class documentViewer(Folder):
|
Line 697 class documentViewer(Folder):
|
|
|
docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl, docinfo=docinfo, dom=dom) |
docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl, docinfo=docinfo, dom=dom) |
|
|
|
# get authorization |
docinfo = self.getAuthinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get access info |
docinfo = self.getAuthinfoFromIndexMeta(url, docinfo=docinfo, dom=dom) # get access info |
|
|
return docinfo |
return docinfo |
Line 839 class documentViewer(Folder):
|
Line 826 class documentViewer(Folder):
|
return pageinfo |
return pageinfo |
|
|
|
|
|
security.declareProtected('View management screens','changeDocumentViewerForm') |
|
changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) |
|
|
def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None): |
def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None): |
"""init document viewer""" |
"""init document viewer""" |
self.title=title |
self.title=title |
Line 846 class documentViewer(Folder):
|
Line 836 class documentViewer(Folder):
|
self.thumbrows = thumbrows |
self.thumbrows = thumbrows |
self.thumbcols = thumbcols |
self.thumbcols = thumbcols |
self.authgroups = [s.strip().lower() for s in authgroups.split(',')] |
self.authgroups = [s.strip().lower() for s in authgroups.split(',')] |
|
try: |
|
# assume MetaDataFolder instance is called metadata |
|
self.metadataService = getattr(self, 'metadata') |
|
except Exception, e: |
|
logging.error("Unable to find MetaDataFolder 'metadata': "+str(e)) |
|
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|