Mercurial > hg > documentViewer
changeset 50:6c0f20cecc60
added evaluation of the presentation/info.xml in texttools
author | dwinter |
---|---|
date | Thu, 11 Jan 2007 13:03:17 +0100 |
parents | a10fff6199b0 |
children | c5d3aabbf61b |
files | documentViewer.py zpt/changeDocumentViewer.zpt zpt/image_main.zpt |
diffstat | 3 files changed, 60 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/documentViewer.py Mon Sep 11 16:43:09 2006 +0200 +++ b/documentViewer.py Thu Jan 11 13:03:17 2007 +0100 @@ -17,6 +17,7 @@ import sys import cgi import urllib +import logging import zLOG import urlparse @@ -59,7 +60,7 @@ ## class documentViewer(Folder): """document viewer""" - textViewerUrl="http://127.0.0.1:8080/HFQP/testXSLT/getPage?" + #textViewerUrl="http://127.0.0.1:8080/HFQP/testXSLT/getPage?" meta_type="Document viewer" @@ -229,6 +230,35 @@ raise IOError("Unable to read index meta from %s"%(url)) return dom + + def getPresentationInfoXML(self, url): + """returns dom of info.xml document at url""" + num_retries = 3 + dom = None + metaUrl = None + if url.startswith("http://"): + # real URL + metaUrl = url + else: + # online path + server=self.digilibBaseUrl+"/servlet/Texter?fn=" + metaUrl=server+url.replace("/mpiwg/online","") + + + for cnt in range(num_retries): + try: + # patch dirk encoding fehler treten dann nicht mehr auf + # dom = NonvalidatingReader.parseUri(metaUrl) + txt=urllib.urlopen(metaUrl).read() + dom = Parse(txt) + break + except: + zLOG.LOG("ERROR documentViewer (getPresentationInfoXML)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) + + if dom is None: + raise IOError("Unable to read infoXMLfrom %s"%(url)) + + return dom def getAuthinfoFromIndexMeta(self,path,docinfo=None,dom=None): @@ -345,11 +375,29 @@ docinfo['textURL'] = textUrl - docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) + + presentationUrls=dom.xpath("//texttool/presentation") + if presentationUrls and (len(presentationUrls)>0): + # presentation url ergiebt sich ersetzen von index.meta in der url der fŸr die Metadaten + # durch den relativen Pfad auf die presentation infos + presentationUrl=url.replace('index.meta',getTextFromNode(presentationUrls[0])) + + docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl,docinfo=docinfo,dom=dom) + else: + docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) docinfo = self.getAuthinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) return docinfo - + + def getBibinfoFromTextToolPresentation(self,url,docinfo=None,dom=None): + """gets the bibliographical information from the preseantion entry in texttools + """ + dom=self.getPresentationInfoXML(url) + docinfo['author']=getTextFromNode(dom.xpath("//author")[0]) + docinfo['title']=getTextFromNode(dom.xpath("//title")[0]) + docinfo['year']=getTextFromNode(dom.xpath("//date")[0]) + return docinfo + def getDocinfoFromImagePath(self,path,docinfo=None): """path ist the path to the images it assumes that the index.meta file is one level higher.""" zLOG.LOG("documentViewer (getdocinfofromimagepath)", zLOG.INFO,"path: %s"%(path)) @@ -370,7 +418,8 @@ """returns docinfo depending on mode""" zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"mode: %s, url: %s"%(mode,url)) # look for cached docinfo in session - if self.REQUEST.SESSION.has_key('docinfo'): + # XXXX Sesion abgeschaltet + if self.REQUEST.SESSION.has_key('docinfo_XX'): docinfo = self.REQUEST.SESSION['docinfo'] # check if its still current if docinfo is not None and docinfo.get('mode') == mode and docinfo.get('url') == url: @@ -471,8 +520,11 @@ def findDigilibUrl(self): """try to get the digilib URL from zogilib""" url = self.imageViewerUrl[:-1] + "/getScalerUrl" - print urlparse.urlparse(url)[0] - print urlparse.urljoin(self.absolute_url(),url) + #print urlparse.urlparse(url)[0] + #print urlparse.urljoin(self.absolute_url(),url) + logging.info("finddigiliburl: %s"%urlparse.urlparse(url)[0]) + logging.info("finddigiliburl: %s"%urlparse.urljoin(self.absolute_url(),url)) + try: if urlparse.urlparse(url)[0]=='': #relative path url=urlparse.urljoin(self.absolute_url()+"/",url)
--- a/zpt/changeDocumentViewer.zpt Mon Sep 11 16:43:09 2006 +0200 +++ b/zpt/changeDocumentViewer.zpt Thu Jan 11 13:03:17 2007 +0100 @@ -16,7 +16,7 @@ You must clear this field when you change the image viewer URL above.</p> <p class="form-label">Text viewer URL</p> <p class="form-element"><input size="80" tal:attributes="value here/textViewerUrl" name="textViewerUrl"></p> - <p class="form-text">Should be an ECHO_xslt instance, full URL up to the '?' (e.g. 'http://echo.mpiwg-berlin.mpg.de/viewText/getPage?')</p> + <p class="form-text">Should be a displayXML instance, full URL up to the '?' (e.g. 'http://echo.mpiwg-berlin.mpg.de/viewText?')</p> <p class="form-optional">Thumbnail rows</p> <p class="form-element"><input size="3" tal:attributes="value here/thumbrows | default" name="thumbrows"></p>
--- a/zpt/image_main.zpt Mon Sep 11 16:43:09 2006 +0200 +++ b/zpt/image_main.zpt Thu Jan 11 13:03:17 2007 +0100 @@ -1,4 +1,4 @@ <tal:block tal:define="docinfo options/docinfo; pageinfo options/pageinfo; mode python:options.get('viewMode','images')"> <iframe tal:condition="python:mode=='images'" height="100%" width="100%" tal:attributes="src string:${here/imageViewerUrl}fn=${docinfo/imagePath}&pn=${pageinfo/current}"/> - <iframe tal:condition="python:mode=='text'" height="100%" width="100%" tal:attributes="src string:${here/textViewerUrl}fn=${docinfo/textURL}&_pn=${pageinfo/current}"/> + <iframe tal:condition="python:mode=='text'" height="100%" width="100%" tal:attributes="src string:${here/textViewerUrl}fn=${docinfo/textURL}&pn=${pageinfo/current}"/> </tal:block>