version 1.31, 2007/06/29 15:44:40
|
version 1.39, 2009/03/09 08:37:19
|
Line 21 import logging
|
Line 21 import logging
|
import math |
import math |
|
|
import urlparse |
import urlparse |
|
from types import * |
def logger(txt,method,txt2): |
def logger(txt,method,txt2): |
"""logging""" |
"""logging""" |
logging.info(txt+ txt2) |
logging.info(txt+ txt2) |
Line 83 class documentViewer(Folder):
|
Line 83 class documentViewer(Folder):
|
docuviewer_css = PageTemplateFile('css/docuviewer.css', globals()) |
docuviewer_css = PageTemplateFile('css/docuviewer.css', globals()) |
info_xml = PageTemplateFile('zpt/info_xml', globals()) |
info_xml = PageTemplateFile('zpt/info_xml', globals()) |
|
|
|
thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals()) |
security.declareProtected('View management screens','changeDocumentViewerForm') |
security.declareProtected('View management screens','changeDocumentViewerForm') |
changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) |
changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) |
|
|
Line 106 class documentViewer(Folder):
|
Line 107 class documentViewer(Folder):
|
self.manage_addFolder('template') |
self.manage_addFolder('template') |
|
|
|
|
|
security.declareProtected('View','thumbs_rss') |
|
def thumbs_rss(self,mode,url,viewMode="auto",start=None,pn=1): |
|
''' |
|
view it |
|
@param mode: defines how to access the document behind url |
|
@param url: url which contains display information |
|
@param viewMode: if images display images, if text display text, default is images (text,images or auto) |
|
|
|
''' |
|
logging.info("HHHHHHHHHHHHHH:load the rss") |
|
logger("documentViewer (index)", logging.INFO, "mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn)) |
|
|
|
if not hasattr(self, 'template'): |
|
# create template folder if it doesn't exist |
|
self.manage_addFolder('template') |
|
|
|
if not self.digilibBaseUrl: |
|
self.digilibBaseUrl = self.findDigilibUrl() or "http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary" |
|
|
|
docinfo = self.getDocinfo(mode=mode,url=url) |
|
pageinfo = self.getPageinfo(start=start,current=pn,docinfo=docinfo) |
|
pt = getattr(self.template, 'thumbs_main_rss') |
|
|
|
if viewMode=="auto": # automodus gewaehlt |
|
if docinfo.get("textURL",'') and self.textViewerUrl: #texturl gesetzt und textViewer konfiguriert |
|
viewMode="text" |
|
else: |
|
viewMode="images" |
|
|
|
return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode) |
|
|
security.declareProtected('View','index_html') |
security.declareProtected('View','index_html') |
def index_html(self,mode,url,viewMode="auto",start=None,pn=1): |
def index_html(self,mode,url,viewMode="auto",start=None,pn=1,mk=None): |
''' |
''' |
view it |
view it |
@param mode: defines how to access the document behind url |
@param mode: defines how to access the document behind url |
Line 135 class documentViewer(Folder):
|
Line 167 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,mk=self.generateMarks(mk)) |
|
|
|
def generateMarks(self,mk): |
|
ret="" |
|
if mk is None: |
|
return "" |
|
|
|
if type(mk) is not ListType: |
|
mk=[mk] |
|
for m in mk: |
|
ret+="mk=%s"%m |
|
return ret |
|
|
def getLink(self,param=None,val=None): |
def getLink(self,param=None,val=None): |
"""link to documentviewer with parameter param set to val""" |
"""link to documentviewer with parameter param set to val""" |
Line 147 class documentViewer(Folder):
|
Line 189 class documentViewer(Folder):
|
del params[param] |
del params[param] |
else: |
else: |
params[param] = str(val) |
params[param] = str(val) |
|
if params["mode"] == "filepath": #wenn beim erst Aufruf filepath gesetzt wurde aendere das nun zu imagepath |
|
params["mode"] = "imagepath" |
|
params["url"] = getParentDir(params["url"]) |
|
|
# quote values and assemble into query string |
# quote values and assemble into query string |
ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()]) |
ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()]) |
url=self.REQUEST['URL1']+"?"+ps |
url=self.REQUEST['URL1']+"?"+ps |
return url |
return url |
|
|
|
def getLinkAmp(self,param=None,val=None): |
|
"""link to documentviewer with parameter param set to val""" |
|
params=self.REQUEST.form.copy() |
|
if param is not None: |
|
if val is None: |
|
if params.has_key(param): |
|
del params[param] |
|
else: |
|
params[param] = str(val) |
|
|
|
# quote values and assemble into query string |
|
logging.info("XYXXXXX: %s"%repr(params.items())) |
|
ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()]) |
|
url=self.REQUEST['URL1']+"?"+ps |
|
return url |
def getInfo_xml(self,url,mode): |
def getInfo_xml(self,url,mode): |
"""returns info about the document as XML""" |
"""returns info about the document as XML""" |
|
|
Line 194 class documentViewer(Folder):
|
Line 253 class documentViewer(Folder):
|
return False |
return False |
|
|
|
|
def getDirinfoFromDigilib(self,path,docinfo=None): |
def getDirinfoFromDigilib(self,path,docinfo=None,cut=0): |
"""gibt param von dlInfo aus""" |
"""gibt param von dlInfo aus""" |
num_retries = 3 |
num_retries = 3 |
if docinfo is None: |
if docinfo is None: |
docinfo = {} |
docinfo = {} |
|
|
|
for x in range(cut): |
|
|
|
path=getParentDir(path) |
|
|
infoUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path |
infoUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path |
|
|
logger("documentViewer (getparamfromdigilib)", logging.INFO, "dirInfo from %s"%(infoUrl)) |
logger("documentViewer (getparamfromdigilib)", logging.INFO, "dirInfo from %s"%(infoUrl)) |
Line 240 class documentViewer(Folder):
|
Line 303 class documentViewer(Folder):
|
metaUrl=server+url.replace("/mpiwg/online","") |
metaUrl=server+url.replace("/mpiwg/online","") |
if not metaUrl.endswith("index.meta"): |
if not metaUrl.endswith("index.meta"): |
metaUrl += "/index.meta" |
metaUrl += "/index.meta" |
print metaUrl |
logging.debug("METAURL: %s"%metaUrl) |
for cnt in range(num_retries): |
for cnt in range(num_retries): |
try: |
try: |
# patch dirk encoding fehler treten dann nicht mehr auf |
# patch dirk encoding fehler treten dann nicht mehr auf |
Line 286 class documentViewer(Folder):
|
Line 349 class documentViewer(Folder):
|
return dom |
return dom |
|
|
|
|
def getAuthinfoFromIndexMeta(self,path,docinfo=None,dom=None): |
def getAuthinfoFromIndexMeta(self,path,docinfo=None,dom=None,cut=0): |
"""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""" |
logger("documentViewer (getauthinfofromindexmeta)", logging.INFO,"path: %s"%(path)) |
logger("documentViewer (getauthinfofromindexmeta)", logging.INFO,"path: %s"%(path)) |
|
|
Line 296 class documentViewer(Folder):
|
Line 359 class documentViewer(Folder):
|
docinfo = {} |
docinfo = {} |
|
|
if dom is None: |
if dom is None: |
dom = self.getIndexMeta(getParentDir(path)) |
for x in range(cut): |
|
path=getParentDir(path) |
|
dom = self.getIndexMeta(path) |
|
|
acctype = dom.xpath("//access-conditions/access/@type") |
acctype = dom.xpath("//access-conditions/access/@type") |
if acctype and (len(acctype)>0): |
if acctype and (len(acctype)>0): |
Line 308 class documentViewer(Folder):
|
Line 373 class documentViewer(Folder):
|
return docinfo |
return docinfo |
|
|
|
|
def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None): |
def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None,cut=0): |
"""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""" |
logging.debug("documentViewer (getbibinfofromindexmeta) path: %s"%(path)) |
logging.debug("documentViewer (getbibinfofromindexmeta) path: %s"%(path)) |
|
|
Line 316 class documentViewer(Folder):
|
Line 381 class documentViewer(Folder):
|
docinfo = {} |
docinfo = {} |
|
|
if dom is None: |
if dom is None: |
dom = self.getIndexMeta(getParentDir(path)) |
for x in range(cut): |
|
path=getParentDir(path) |
|
dom = self.getIndexMeta(path) |
|
|
|
logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path)) |
# put in all raw bib fields as dict "bib" |
# put in all raw bib fields as dict "bib" |
bib = dom.xpath("//bib/*") |
bib = dom.xpath("//bib/*") |
if bib and len(bib)>0: |
if bib and len(bib)>0: |
Line 413 class documentViewer(Folder):
|
Line 481 class documentViewer(Folder):
|
imageDir=imageDir.replace("/mpiwg/online",'') |
imageDir=imageDir.replace("/mpiwg/online",'') |
docinfo=self.getDirinfoFromDigilib(imageDir,docinfo=docinfo) |
docinfo=self.getDirinfoFromDigilib(imageDir,docinfo=docinfo) |
docinfo['imagePath'] = imageDir |
docinfo['imagePath'] = imageDir |
|
|
docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+imageDir |
docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+imageDir |
|
|
viewerUrls=dom.xpath("//texttool/digiliburlprefix") |
viewerUrls=dom.xpath("//texttool/digiliburlprefix") |
Line 462 class documentViewer(Folder):
|
Line 531 class documentViewer(Folder):
|
pass |
pass |
return docinfo |
return docinfo |
|
|
def getDocinfoFromImagePath(self,path,docinfo=None): |
def getDocinfoFromImagePath(self,path,docinfo=None,cut=0): |
"""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.""" |
logger("documentViewer (getdocinfofromimagepath)", logging.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","") |
docinfo['imagePath'] = path |
docinfo['imagePath'] = path |
docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo) |
docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo,cut=cut) |
|
|
|
pathorig=path |
|
for x in range(cut): |
|
path=getParentDir(path) |
|
logging.error("PATH:"+path) |
imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn="+path |
imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn="+path |
docinfo['imageURL'] = imageUrl |
docinfo['imageURL'] = imageUrl |
|
|
docinfo = self.getBibinfoFromIndexMeta(path,docinfo=docinfo) |
#path ist the path to the images it assumes that the index.meta file is one level higher. |
docinfo = self.getAuthinfoFromIndexMeta(path,docinfo=docinfo) |
docinfo = self.getBibinfoFromIndexMeta(pathorig,docinfo=docinfo,cut=cut+1) |
|
docinfo = self.getAuthinfoFromIndexMeta(pathorig,docinfo=docinfo,cut=cut+1) |
return docinfo |
return docinfo |
|
|
|
|
Line 494 class documentViewer(Folder):
|
Line 569 class documentViewer(Folder):
|
docinfo = self.getDocinfoFromTextTool(url, docinfo=docinfo) |
docinfo = self.getDocinfoFromTextTool(url, docinfo=docinfo) |
elif mode=="imagepath": |
elif mode=="imagepath": |
docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo) |
docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo) |
|
elif mode=="filepath": |
|
docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo,cut=1) |
else: |
else: |
logger("documentViewer (getdocinfo)", logging.ERROR,"unknown mode!") |
logger("documentViewer (getdocinfo)", logging.ERROR,"unknown mode!") |
raise ValueError("Unknown mode %s"%(mode)) |
raise ValueError("Unknown mode %s"%(mode)) |