version 1.21, 2007/01/11 20:27:17
|
version 1.24, 2007/05/03 17:28:23
|
Line 18 import sys
|
Line 18 import sys
|
import cgi |
import cgi |
import urllib |
import urllib |
import logging |
import logging |
import zLOG |
|
import urlparse |
import urlparse |
|
|
|
def logger(txt,method,txt2): |
|
"""logging""" |
|
logging.info(txt+ txt2) |
|
|
|
|
def getInt(number, default=0): |
def getInt(number, default=0): |
"""returns always an int (0 in case of problems)""" |
"""returns always an int (0 in case of problems)""" |
try: |
try: |
Line 109 class documentViewer(Folder):
|
Line 114 class documentViewer(Folder):
|
|
|
''' |
''' |
|
|
zLOG.LOG("documentViewer (index)", zLOG.INFO, "mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn)) |
logger("documentViewer (index)", logging.INFO, "mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn)) |
|
|
if not hasattr(self, 'template'): |
if not hasattr(self, 'template'): |
# create template folder if it doesn't exist |
# create template folder if it doesn't exist |
Line 128 class documentViewer(Folder):
|
Line 133 class documentViewer(Folder):
|
else: |
else: |
viewMode="images" |
viewMode="images" |
|
|
|
|
return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode) |
return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode) |
|
|
|
|
Line 149 class documentViewer(Folder):
|
Line 155 class documentViewer(Folder):
|
|
|
def getStyle(self, idx, selected, style=""): |
def getStyle(self, idx, selected, style=""): |
"""returns a string with the given style and append 'sel' if path == selected.""" |
"""returns a string with the given style and append 'sel' if path == selected.""" |
#zLOG.LOG("documentViewer (getstyle)", zLOG.INFO, "idx: %s selected: %s style: %s"%(idx,selected,style)) |
#logger("documentViewer (getstyle)", logging.INFO, "idx: %s selected: %s style: %s"%(idx,selected,style)) |
if idx == selected: |
if idx == selected: |
return style + 'sel' |
return style + 'sel' |
else: |
else: |
Line 159 class documentViewer(Folder):
|
Line 165 class documentViewer(Folder):
|
def isAccessible(self, docinfo): |
def isAccessible(self, docinfo): |
"""returns if access to the resource is granted""" |
"""returns if access to the resource is granted""" |
access = docinfo.get('accessType', None) |
access = docinfo.get('accessType', None) |
zLOG.LOG("documentViewer (accessOK)", zLOG.INFO, "access type %s"%access) |
logger("documentViewer (accessOK)", logging.INFO, "access type %s"%access) |
if access is not None and access == 'free': |
if access is not None and access == 'free': |
zLOG.LOG("documentViewer (accessOK)", zLOG.INFO, "access is free") |
logger("documentViewer (accessOK)", logging.INFO, "access is free") |
return True |
return True |
elif access is None or access in self.authgroups: |
elif access is None or access in self.authgroups: |
# only local access -- only logged in users |
# only local access -- only logged in users |
Line 172 class documentViewer(Folder):
|
Line 178 class documentViewer(Folder):
|
else: |
else: |
return False |
return False |
|
|
zLOG.LOG("documentViewer (accessOK)", zLOG.INFO, "unknown access type %s"%access) |
logger("documentViewer (accessOK)", logging.INFO, "unknown access type %s"%access) |
return False |
return False |
|
|
|
|
Line 184 class documentViewer(Folder):
|
Line 190 class documentViewer(Folder):
|
|
|
infoUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path |
infoUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path |
|
|
zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo from %s"%(infoUrl)) |
logger("documentViewer (getparamfromdigilib)", logging.INFO, "dirInfo from %s"%(infoUrl)) |
|
|
for cnt in range(num_retries): |
for cnt in range(num_retries): |
try: |
try: |
Line 193 class documentViewer(Folder):
|
Line 199 class documentViewer(Folder):
|
dom = Parse(txt) |
dom = Parse(txt) |
break |
break |
except: |
except: |
zLOG.LOG("documentViewer (getdirinfofromdigilib)", zLOG.ERROR, "error reading %s (try %d)"%(infoUrl,cnt)) |
logger("documentViewer (getdirinfofromdigilib)", logging.ERROR, "error reading %s (try %d)"%(infoUrl,cnt)) |
else: |
else: |
raise IOError("Unable to get dir-info from %s"%(infoUrl)) |
raise IOError("Unable to get dir-info from %s"%(infoUrl)) |
|
|
sizes=dom.xpath("//dir/size") |
sizes=dom.xpath("//dir/size") |
zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:size"%sizes) |
logger("documentViewer (getparamfromdigilib)", logging.INFO, "dirInfo:size"%sizes) |
|
|
if sizes: |
if sizes: |
docinfo['numPages'] = int(getTextFromNode(sizes[0])) |
docinfo['numPages'] = int(getTextFromNode(sizes[0])) |
Line 231 class documentViewer(Folder):
|
Line 237 class documentViewer(Folder):
|
dom = Parse(txt) |
dom = Parse(txt) |
break |
break |
except: |
except: |
zLOG.LOG("ERROR documentViewer (getIndexMata)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) |
logger("ERROR documentViewer (getIndexMata)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2]) |
|
|
if dom is None: |
if dom is None: |
raise IOError("Unable to read index meta from %s"%(url)) |
raise IOError("Unable to read index meta from %s"%(url)) |
Line 260 class documentViewer(Folder):
|
Line 266 class documentViewer(Folder):
|
dom = Parse(txt) |
dom = Parse(txt) |
break |
break |
except: |
except: |
zLOG.LOG("ERROR documentViewer (getPresentationInfoXML)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) |
logger("ERROR documentViewer (getPresentationInfoXML)", logging.INFO,"%s (%s)"%sys.exc_info()[0:2]) |
|
|
if dom is None: |
if dom is None: |
raise IOError("Unable to read infoXMLfrom %s"%(url)) |
raise IOError("Unable to read infoXMLfrom %s"%(url)) |
Line 270 class documentViewer(Folder):
|
Line 276 class documentViewer(Folder):
|
|
|
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""" |
zLOG.LOG("documentViewer (getauthinfofromindexmeta)", zLOG.INFO,"path: %s"%(path)) |
logger("documentViewer (getauthinfofromindexmeta)", logging.INFO,"path: %s"%(path)) |
|
|
access = None |
access = None |
|
|
Line 292 class documentViewer(Folder):
|
Line 298 class documentViewer(Folder):
|
|
|
def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None): |
def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None): |
"""gets bibliographical info from the index.meta file at path or given by dom""" |
"""gets bibliographical info from the index.meta file at path or given by dom""" |
zLOG.LOG("documentViewer (getbibinfofromindexmeta)", zLOG.INFO,"path: %s"%(path)) |
logger("documentViewer (getbibinfofromindexmeta)", logging.INFO,"path: %s"%(path)) |
|
|
if docinfo is None: |
if docinfo is None: |
docinfo = {} |
docinfo = {} |
Line 315 class documentViewer(Folder):
|
Line 321 class documentViewer(Folder):
|
docinfo['title']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['title'][0])[0]) |
docinfo['title']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['title'][0])[0]) |
docinfo['year']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['year'][0])[0]) |
docinfo['year']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['year'][0])[0]) |
|
|
|
logging.info("bla") |
|
try: |
|
docinfo['lang']=getTextFromNode(dom.xpath("//bib/lang")[0]) |
|
except: |
|
docinfo['lang']='' |
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""" |
zLOG.LOG("documentViewer (getdocinfofromtexttool)", zLOG.INFO,"url: %s"%(url)) |
logger("documentViewer (getdocinfofromtexttool)", logging.INFO,"url: %s"%(url)) |
if docinfo is None: |
if docinfo is None: |
docinfo = {} |
docinfo = {} |
|
|
|
if docinfo.get('lang',None) is None: |
|
docinfo['lang']='' # default keine Sprache gesetzt |
if dom is None: |
if dom is None: |
dom = self.getIndexMeta(url) |
dom = self.getIndexMeta(url) |
|
|
Line 334 class documentViewer(Folder):
|
Line 347 class documentViewer(Folder):
|
if archiveNames and (len(archiveNames)>0): |
if archiveNames and (len(archiveNames)>0): |
archiveName=getTextFromNode(archiveNames[0]) |
archiveName=getTextFromNode(archiveNames[0]) |
else: |
else: |
zLOG.LOG("documentViewer (getdocinfofromtexttool)", zLOG.WARNING,"resource/name missing in: %s"%(url)) |
logger("documentViewer (getdocinfofromtexttool)", logging.WARNING,"resource/name missing in: %s"%(url)) |
|
|
archivePaths=dom.xpath("//resource/archive-path") |
archivePaths=dom.xpath("//resource/archive-path") |
if archivePaths and (len(archivePaths)>0): |
if archivePaths and (len(archivePaths)>0): |
Line 346 class documentViewer(Folder):
|
Line 359 class documentViewer(Folder):
|
archivePath += "/" + archiveName |
archivePath += "/" + archiveName |
else: |
else: |
# try to get archive-path from url |
# try to get archive-path from url |
zLOG.LOG("documentViewer (getdocinfofromtexttool)", zLOG.WARNING,"resource/archive-path missing in: %s"%(url)) |
logger("documentViewer (getdocinfofromtexttool)", logging.WARNING,"resource/archive-path missing in: %s"%(url)) |
if (not url.startswith('http')): |
if (not url.startswith('http')): |
archivePath = url.replace('index.meta', '') |
archivePath = url.replace('index.meta', '') |
|
|
Line 358 class documentViewer(Folder):
|
Line 371 class documentViewer(Folder):
|
if imageDirs and (len(imageDirs)>0): |
if imageDirs and (len(imageDirs)>0): |
imageDir=getTextFromNode(imageDirs[0]) |
imageDir=getTextFromNode(imageDirs[0]) |
else: |
else: |
# we balk with no image tag |
# we balk with no image tag / not necessary anymore because textmode is now standard |
raise IOError("No text-tool info in %s"%(url)) |
#raise IOError("No text-tool info in %s"%(url)) |
|
imageDir="" |
|
docinfo['numPages']=1 # im moment einfach auf eins setzen, navigation ueber die thumbs geht natuerlich nicht |
|
|
|
docinfo['imagePath'] = "" # keine Bilder |
|
docinfo['imageURL'] = "" |
|
|
if imageDir and archivePath: |
if imageDir and archivePath: |
#print "image: ", imageDir, " archivepath: ", archivePath |
#print "image: ", imageDir, " archivepath: ", archivePath |
Line 382 class documentViewer(Folder):
|
Line 400 class documentViewer(Folder):
|
|
|
docinfo['textURL'] = textUrl |
docinfo['textURL'] = textUrl |
|
|
|
|
presentationUrls=dom.xpath("//texttool/presentation") |
presentationUrls=dom.xpath("//texttool/presentation") |
if presentationUrls and (len(presentationUrls)>0): |
docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) # get info von bib tag |
|
|
|
if presentationUrls and (len(presentationUrls)>0): # ueberschreibe diese durch presentation informationen |
# presentation url ergiebt sich ersetzen von index.meta in der url der fŸr die Metadaten |
# presentation url ergiebt sich ersetzen von index.meta in der url der fŸr die Metadaten |
# durch den relativen Pfad auf die presentation infos |
# durch den relativen Pfad auf die presentation infos |
presentationUrl=url.replace('index.meta',getTextFromNode(presentationUrls[0])) |
presentationUrl=url.replace('index.meta',getTextFromNode(presentationUrls[0])) |
|
|
docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl,docinfo=docinfo,dom=dom) |
docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl,docinfo=docinfo,dom=dom) |
else: |
|
docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) |
docinfo = self.getAuthinfoFromIndexMeta(path,docinfo=docinfo) |
docinfo = self.getAuthinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) |
|
return docinfo |
return docinfo |
|
|
|
|
Line 407 class documentViewer(Folder):
|
Line 424 class documentViewer(Folder):
|
|
|
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)) |
logger("documentViewer (getdocinfofromimagepath)", logging.INFO,"path: %s"%(path)) |
if docinfo is None: |
if docinfo is None: |
docinfo = {} |
docinfo = {} |
path=path.replace("/mpiwg/online","") |
path=path.replace("/mpiwg/online","") |
Line 423 class documentViewer(Folder):
|
Line 440 class documentViewer(Folder):
|
|
|
def getDocinfo(self, mode, url): |
def getDocinfo(self, mode, url): |
"""returns docinfo depending on mode""" |
"""returns docinfo depending on mode""" |
zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"mode: %s, url: %s"%(mode,url)) |
logger("documentViewer (getdocinfo)", logging.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'): |
if self.REQUEST.SESSION.has_key('docinfo'): |
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: |
zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"docinfo in session: %s"%docinfo) |
logger("documentViewer (getdocinfo)", logging.INFO,"docinfo in session: %s"%docinfo) |
return docinfo |
return docinfo |
# new docinfo |
# new docinfo |
docinfo = {'mode': mode, 'url': url} |
docinfo = {'mode': mode, 'url': url} |
Line 438 class documentViewer(Folder):
|
Line 455 class documentViewer(Folder):
|
elif mode=="imagepath": |
elif mode=="imagepath": |
docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo) |
docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo) |
else: |
else: |
zLOG.LOG("documentViewer (getdocinfo)", zLOG.ERROR,"unknown mode!") |
logger("documentViewer (getdocinfo)", logging.ERROR,"unknown mode!") |
raise ValueError("Unknown mode %s"%(mode)) |
raise ValueError("Unknown mode %s"%(mode)) |
|
|
zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"docinfo: %s"%docinfo) |
logger("documentViewer (getdocinfo)", logging.INFO,"docinfo: %s"%docinfo) |
self.REQUEST.SESSION['docinfo'] = docinfo |
self.REQUEST.SESSION['docinfo'] = docinfo |
return docinfo |
return docinfo |
|
|
Line 590 def manage_addDocumentViewerTemplate(sel
|
Line 607 def manage_addDocumentViewerTemplate(sel
|
|
|
self._setObject(id, DocumentViewerTemplate(id)) |
self._setObject(id, DocumentViewerTemplate(id)) |
ob = getattr(self, id) |
ob = getattr(self, id) |
ob.pt_edit(open(os.path.join(package_home(globals()),'zpt/viewer_main.zpt')).read(),None) |
txt=file(os.path.join(package_home(globals()),'zpt/viewer_main.zpt'),'r').read() |
|
logging.info("txt %s:"%txt) |
|
ob.pt_edit(txt,"text/html") |
if title: |
if title: |
ob.pt_setTitle(title) |
ob.pt_setTitle(title) |
try: |
try: |