version 1.19, 2006/09/11 14:43:09
|
version 1.20, 2007/01/11 12:03:17
|
Line 17 import os.path
|
Line 17 import os.path
|
import sys |
import sys |
import cgi |
import cgi |
import urllib |
import urllib |
|
import logging |
import zLOG |
import zLOG |
import urlparse |
import urlparse |
|
|
Line 59 def urlopen(url,timeout=2):
|
Line 60 def urlopen(url,timeout=2):
|
## |
## |
class documentViewer(Folder): |
class documentViewer(Folder): |
"""document viewer""" |
"""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" |
meta_type="Document viewer" |
|
|
Line 230 class documentViewer(Folder):
|
Line 231 class documentViewer(Folder):
|
|
|
return dom |
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): |
def getAuthinfoFromIndexMeta(self,path,docinfo=None,dom=None): |
"""gets authorization info from the index.meta file at path or given by dom""" |
"""gets authorization info from the index.meta file at path or given by dom""" |
Line 345 class documentViewer(Folder):
|
Line 375 class documentViewer(Folder):
|
|
|
docinfo['textURL'] = textUrl |
docinfo['textURL'] = textUrl |
|
|
|
|
|
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.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) |
docinfo = self.getAuthinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) |
docinfo = self.getAuthinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) |
return docinfo |
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): |
def getDocinfoFromImagePath(self,path,docinfo=None): |
"""path ist the path to the images it assumes that the index.meta file is one level higher.""" |
"""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)) |
zLOG.LOG("documentViewer (getdocinfofromimagepath)", zLOG.INFO,"path: %s"%(path)) |
Line 370 class documentViewer(Folder):
|
Line 418 class documentViewer(Folder):
|
"""returns docinfo depending on mode""" |
"""returns docinfo depending on mode""" |
zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"mode: %s, url: %s"%(mode,url)) |
zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"mode: %s, url: %s"%(mode,url)) |
# look for cached docinfo in session |
# 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'] |
docinfo = self.REQUEST.SESSION['docinfo'] |
# check if its still current |
# check if its still current |
if docinfo is not None and docinfo.get('mode') == mode and docinfo.get('url') == url: |
if docinfo is not None and docinfo.get('mode') == mode and docinfo.get('url') == url: |
Line 471 class documentViewer(Folder):
|
Line 520 class documentViewer(Folder):
|
def findDigilibUrl(self): |
def findDigilibUrl(self): |
"""try to get the digilib URL from zogilib""" |
"""try to get the digilib URL from zogilib""" |
url = self.imageViewerUrl[:-1] + "/getScalerUrl" |
url = self.imageViewerUrl[:-1] + "/getScalerUrl" |
print urlparse.urlparse(url)[0] |
#print urlparse.urlparse(url)[0] |
print urlparse.urljoin(self.absolute_url(),url) |
#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: |
try: |
if urlparse.urlparse(url)[0]=='': #relative path |
if urlparse.urlparse(url)[0]=='': #relative path |
url=urlparse.urljoin(self.absolute_url()+"/",url) |
url=urlparse.urljoin(self.absolute_url()+"/",url) |