version 1.39, 2004/07/27 15:31:23
|
version 1.46, 2004/10/05 17:43:53
|
Line 12 import re
|
Line 12 import re
|
import string |
import string |
import urllib |
import urllib |
import types |
import types |
|
import random |
from Globals import package_home |
from Globals import package_home |
|
|
ZOGIVERSION = "0.9.7 ROC:23.7.2004" |
ZOGIVERSION = "0.9.10b ROC:5.10.2004" |
|
|
def cropf(f): |
def cropf(f): |
"""returns a float with reduced precision""" |
"""returns a float with reduced precision""" |
Line 22 def cropf(f):
|
Line 23 def cropf(f):
|
|
|
|
|
def sendFile(self, filename, type): |
def sendFile(self, filename, type): |
"""sends an object or a local file (in the product) as response""" |
"""sends an object or a local file (from the product) as response""" |
paths = filename.split('/') |
paths = filename.split('/') |
object = self |
object = self |
# look for an object called filename |
# look for an object called filename |
Line 75 class zogiImage(Image):
|
Line 76 class zogiImage(Image):
|
"""init""" |
"""init""" |
self.id=id |
self.id=id |
self.title=title |
self.title=title |
|
if baseUrl: |
self.baseUrl=baseUrl |
self.baseUrl=baseUrl |
|
else: |
|
self.baseUrl="http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler?" |
|
|
self.queryString=queryString |
self.queryString=queryString |
self.content_type=content_type |
self.content_type=content_type |
self.precondition=precondition |
self.precondition=precondition |
Line 98 class zogiImage(Image):
|
Line 103 class zogiImage(Image):
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
|
def index_html(self, REQUEST, RESPONSE): |
def index_html(self, REQUEST, RESPONSE): |
|
"""service the request by redirecting to digilib server""" |
|
print "REDIRECT: ", self.baseUrl+self.queryString |
|
RESPONSE.redirect(self.baseUrl+self.queryString) |
|
return '' |
|
|
|
def index_html2(self, REQUEST, RESPONSE): |
""" |
""" |
Modified version of OFS/Image.py |
Modified version of OFS/Image.py |
|
|
Line 350 class zogiImage(Image):
|
Line 360 class zogiImage(Image):
|
# for a cache manager to set response headers. |
# for a cache manager to set response headers. |
self.ZCacheable_set(None) |
self.ZCacheable_set(None) |
|
|
|
#return "zogiimage: "+self.baseUrl+self.queryString |
data=urllib.urlopen(self.baseUrl+self.queryString).read() |
data=urllib.urlopen(self.baseUrl+self.queryString).read() |
|
|
if type(data) is type(''): |
if type(data) is type(''): |
Line 370 def manage_addZogiImageForm(self):
|
Line 381 def manage_addZogiImageForm(self):
|
|
|
|
|
def manage_addZogiImage(self,id,title,baseUrl, queryString,RESPONSE=None): |
def manage_addZogiImage(self,id,title,baseUrl, queryString,RESPONSE=None): |
"""add dgilib""" |
"""add zogiimage""" |
newObj=zogiImage(id,title,baseUrl, queryString) |
newObj=zogiImage(id,title,baseUrl, queryString) |
self.Destination()._setObject(id,newObj) |
self.Destination()._setObject(id,newObj) |
if RESPONSE is not None: |
if RESPONSE is not None: |
Line 396 class zogiLib(Folder):
|
Line 407 class zogiLib(Folder):
|
self.dlServerURL = dlServerURL |
self.dlServerURL = dlServerURL |
self.basePath=basePath |
self.basePath=basePath |
self.layout=layout |
self.layout=layout |
if dlTarget: |
|
self.dlTarget = dlTarget |
self.dlTarget = dlTarget |
else: |
|
self.dlTarget = "digilib" |
|
|
|
if dlToolbarBaseURL: |
if dlToolbarBaseURL: |
self.dlToolbarBaseURL = dlToolbarBaseURL |
self.dlToolbarBaseURL = dlToolbarBaseURL |
Line 452 class zogiLib(Folder):
|
Line 460 class zogiLib(Folder):
|
|
|
return ret |
return ret |
except: |
except: |
return ret |
|
|
return [] |
|
|
|
|
def formatHTML(self,url,label=None,viewUrl=None): |
def formatHTML(self,url,label=None,viewUrl=None): |
Line 541 class zogiLib(Folder):
|
Line 550 class zogiLib(Folder):
|
def createHeadJS(self): |
def createHeadJS(self): |
"""generate all javascript tags for head""" |
"""generate all javascript tags for head""" |
self.checkQuery() |
self.checkQuery() |
bt = self.REQUEST.SESSION['browserType'] |
bt = self.REQUEST.SESSION.get('browserType', {}) |
if bt['staticHTML']: |
if bt['staticHTML']: |
return |
return |
|
|
Line 638 class zogiLib(Folder):
|
Line 647 class zogiLib(Folder):
|
def optionwindow(self): |
def optionwindow(self): |
"""showoptions""" |
"""showoptions""" |
self.checkQuery() |
self.checkQuery() |
if self.REQUEST.has_key('frametarget'): |
|
self.dlTarget = self.REQUEST['frametarget'] |
|
bt = self.REQUEST.SESSION['browserType'] |
bt = self.REQUEST.SESSION['browserType'] |
if bt['staticHTML']: |
if bt['staticHTML']: |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow_static.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow_static.zpt')).__of__(self) |
Line 737 class zogiLib(Folder):
|
Line 744 class zogiLib(Folder):
|
return pt() |
return pt() |
|
|
|
|
|
|
def storeQuery(self, more = None): |
def storeQuery(self, more = None): |
"""storeQuery in session""" |
"""storeQuery in session""" |
dlParams = {} |
dlParams = {} |
Line 759 class zogiLib(Folder):
|
Line 765 class zogiLib(Folder):
|
else: |
else: |
modes=[] |
modes=[] |
|
|
self.REQUEST.SESSION['query'] = dlParams |
wid = self.getWID() |
self.REQUEST.SESSION['dlModes'] = modes |
self.REQUEST.set('wid', wid) |
self.REQUEST.SESSION['dlInfo'] = self.getDLInfo() |
self.setSubSession('dlQuery', dlParams) |
|
self.setSubSession('dlModes', modes) |
|
self.setSubSession('dlInfo', self.getDLInfo()) |
if not self.REQUEST.SESSION.has_key('browserType'): |
if not self.REQUEST.SESSION.has_key('browserType'): |
self.REQUEST.SESSION['browserType'] = browserCheck(self) |
self.REQUEST.SESSION['browserType'] = browserCheck(self) |
|
|
Line 769 class zogiLib(Folder):
|
Line 777 class zogiLib(Folder):
|
|
|
def checkQuery(self): |
def checkQuery(self): |
"""check if the query has been stored""" |
"""check if the query has been stored""" |
if not (self.REQUEST.SESSION and self.REQUEST.SESSION.has_key('query')) : |
if not (self.REQUEST.SESSION and self.getSubSession('dlQuery')) : |
print "ZOGILIB: have to store query!!" |
print "ZOGILIB: have to store query!!" |
self.storeQuery() |
self.storeQuery() |
return |
return |
Line 789 class zogiLib(Folder):
|
Line 797 class zogiLib(Folder):
|
url += '/' |
url += '/' |
return url |
return url |
|
|
|
def zogilibAction(self, action, otherbase=None, wid=None): |
|
"""returns a URL with zogilib path, action and wid""" |
|
url = self.zogilibPath(otherbase) |
|
url += action |
|
if wid: |
|
url += '?wid=' + wid |
|
else: |
|
url += '?wid=' + self.getWID() |
|
return url |
|
|
|
def getSubSession(self, key, default=None): |
|
"""returns an element from a session with a wid""" |
|
wid = self.getWID() |
|
return self.REQUEST.SESSION.get(key+'_'+wid, default) |
|
|
|
def setSubSession(self, key, value): |
|
"""puts an element in a session with a wid""" |
|
wid = self.getWID() |
|
self.REQUEST.SESSION.set(key+'_'+wid, value) |
|
return |
|
|
|
def getWID(self): |
|
"""returns a (new) window id""" |
|
wid = self.REQUEST.get('wid') |
|
if not wid: |
|
wid = 'digi_'+str(int(random.random()*10000)) |
|
print "new WID:", wid |
|
return wid |
|
|
def getDLParam(self, param): |
def getDLParam(self, param): |
"""returns parameter""" |
"""returns parameter""" |
try: |
try: |
return self.REQUEST.SESSION['query'][param] |
return self.getSubSession('dlQuery').get(param) |
except: |
except: |
return |
return |
|
|
def setDLParam(self, param, value): |
def setDLParam(self, param, value): |
"""sets parameter""" |
"""sets parameter""" |
self.REQUEST.SESSION['query'][param] = value |
dlParams = self.getSubSession('dlQuery') |
|
#try: |
|
dlParams[param] = value |
|
#except: |
|
# self.setSubSession('dlQuery', {param: value}) |
return |
return |
|
|
def getAllDLParams(self): |
def getAllDLParams(self): |
"""parameter string for digilib""" |
"""parameter string for digilib""" |
dlParams = self.REQUEST.SESSION['query'] |
dlParams = self.getSubSession('dlQuery') |
# save modes |
# save modes |
modes = self.REQUEST.SESSION['dlModes'] |
modes = self.getSubSession('dlModes') |
dlParams['mo'] = string.join(modes, ',') |
dlParams['mo'] = string.join(modes, ',') |
# assemble query string |
# assemble query string |
ret = "" |
ret = "" |
Line 837 class zogiLib(Folder):
|
Line 878 class zogiLib(Folder):
|
|
|
def display(self): |
def display(self): |
"""(re)display page""" |
"""(re)display page""" |
|
if not self.getDLParam('wid'): |
|
wid = self.getWID() |
|
self.setDLParam('wid', wid) |
|
|
params = self.getAllDLParams() |
params = self.getAllDLParams() |
|
|
if self.basePath: |
if self.basePath: |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?'+params) |
self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?'+params) |
else: |
else: |
Line 856 class zogiLib(Folder):
|
Line 902 class zogiLib(Folder):
|
"""returns dlTarget""" |
"""returns dlTarget""" |
self.checkQuery() |
self.checkQuery() |
s = self.dlTarget |
s = self.dlTarget |
|
if s == None: |
|
s = "" |
# s = 'dl' |
# s = 'dl' |
# if self.getDLParam('fn'): |
# if self.getDLParam('fn'): |
# s += "_" + self.getDLParam('fn') |
# s += "_" + self.getDLParam('fn') |
Line 876 class zogiLib(Folder):
|
Line 924 class zogiLib(Folder):
|
|
|
def getPT(self): |
def getPT(self): |
"""pagenums""" |
"""pagenums""" |
di = self.REQUEST.SESSION['dlInfo'] |
di = self.getSubSession('dlInfo_') |
if di: |
if di: |
return int(di['pt']) |
return int(di['pt']) |
else: |
else: |
Line 908 class zogiLib(Folder):
|
Line 956 class zogiLib(Folder):
|
|
|
def hasMode(self, mode): |
def hasMode(self, mode): |
"""returns if mode is in the diglib mo parameter""" |
"""returns if mode is in the diglib mo parameter""" |
return (mode in self.REQUEST.SESSION['dlModes']) |
wid = self.getWID() |
|
return (mode in self.REQUEST.SESSION['dlModes_'+wid]) |
|
|
def hasNextPage(self): |
def hasNextPage(self): |
"""returns if there is a next page""" |
"""returns if there is a next page""" |
Line 958 class zogiLib(Folder):
|
Line 1007 class zogiLib(Folder):
|
|
|
def dl_HMirror(self): |
def dl_HMirror(self): |
"""mirror action""" |
"""mirror action""" |
modes = self.REQUEST.SESSION['dlModes'] |
modes = self.getSubSession('dlModes') |
if 'hmir' in modes: |
if 'hmir' in modes: |
modes.remove('hmir') |
modes.remove('hmir') |
else: |
else: |
Line 968 class zogiLib(Folder):
|
Line 1017 class zogiLib(Folder):
|
|
|
def dl_VMirror(self): |
def dl_VMirror(self): |
"""mirror action""" |
"""mirror action""" |
modes = self.REQUEST.SESSION['dlModes'] |
modes = self.getSubSession('dlModes') |
if 'vmir' in modes: |
if 'vmir' in modes: |
modes.remove('vmir') |
modes.remove('vmir') |
else: |
else: |
Line 1105 class zogiLib(Folder):
|
Line 1154 class zogiLib(Folder):
|
self.dlServerURL=dlServerURL |
self.dlServerURL=dlServerURL |
self.basePath = basePath |
self.basePath = basePath |
self.layout=version |
self.layout=version |
if dlTarget: |
|
self.dlTarget = dlTarget |
self.dlTarget = dlTarget |
else: |
|
self.dlTarget = "digilib" |
|
|
|
if dlToolbarBaseURL: |
if dlToolbarBaseURL: |
self.dlToolbarBaseURL = dlToolbarBaseURL |
self.dlToolbarBaseURL = dlToolbarBaseURL |
Line 1121 class zogiLib(Folder):
|
Line 1167 class zogiLib(Folder):
|
|
|
|
|
## |
## |
## odd stuff |
## odds and ends |
## |
## |
|
|
def repairZogilib(self, obj=None): |
def repairZogilib(self, obj=None): |
Line 1159 def manage_addZogiLibForm(self):
|
Line 1205 def manage_addZogiLibForm(self):
|
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibForm')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiLibForm')).__of__(self) |
return pt() |
return pt() |
|
|
def manage_addZogiLib(self,id,title,dlServerURL,layout="book",basePath="",dlTarget="digilib",dlToolbarBaseURL=None,RESPONSE=None): |
def manage_addZogiLib(self,id,title,dlServerURL,version="book",basePath="",dlTarget=None,dlToolbarBaseURL=None,RESPONSE=None): |
"""add dgilib""" |
"""add dgilib""" |
newObj=zogiLib(id,title,dlServerURL, localFileBase, version, basePath, dlTarget, dlToolbarBaseURL) |
newObj=zogiLib(id,title,dlServerURL, version, basePath, dlTarget, dlToolbarBaseURL) |
self.Destination()._setObject(id,newObj) |
self.Destination()._setObject(id,newObj) |
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |