--- zogiLib/zogiLib.py 2006/07/13 20:42:46 1.65 +++ zogiLib/zogiLib.py 2006/07/25 18:18:36 1.66 @@ -57,9 +57,9 @@ class zogiImage(SimpleItem): """einzelnes Image""" meta_type="zogiImage" - manage_options=SimpleItem.manage_options+( + manage_options=( {'label':'Main config','action':'changeZogiImageForm'}, - ) + )+SimpleItem.manage_options def __init__(self,id,title,baseUrl,queryString,content_type='',precondition=''): @@ -79,25 +79,15 @@ class zogiImage(SimpleItem): # """getUrlData""" # return urllib.urlopen(self.baseUrl+self.queryString) - def changeZogiImageForm(self): - """Main configuration""" - pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiImageForm.zpt')).__of__(self) - return pt() + changeZogiImageForm = PageTemplateFile('zpt/changeZogiImageForm.zpt', globals()) - def changeZogiImage(self,title,baseUrl, queryString,RESPONSE=None): - """change it""" - self.title=title - self.baseUrl=baseUrl - self.queryString=queryString - - if RESPONSE is not None: - RESPONSE.redirect('manage_main') - def index_html(self, REQUEST, RESPONSE): """service the request by redirecting to digilib server""" - RESPONSE.redirect(self.baseUrl+self.queryString) + # use status 307 = moved temporarily + RESPONSE.redirect(self.baseUrl+self.queryString, status=307) return '' + def rescale(self,width=None,height=None): """andere parameter im querystring""" qs=cgi.parse_qs(self.queryString) @@ -109,22 +99,56 @@ class zogiImage(SimpleItem): qs['dw']=width if height: qs['dh']=height - qsneu=urllib.urlencode(qs) self.queryString=qsneu return "done" + + def setWithDigilibURL(self,digilibUrl): + """take all parameters from digilib URL string""" + base = re.match('(.*?/Scaler\?)(.*)', digilibUrl) + if base is not None: + params = base.group(2).split('&') + newparams = [] + # filter out the parameters we want + for p in params: + (key, val) = p.split('=') + if key in ['fn','pn','dw','dh','ww','wh','wx','wy','mo']: + newparams.append(p) + # set the new parameters + if len(newparams) > 1: + self.baseUrl = base.group(1) + self.queryString = '&'.join(newparams) + return True + + return False + + + def changeZogiImage(self,title,baseUrl, queryString, digilibUrl=None, RESPONSE=None): + """change it""" + self.title=title + self.baseUrl=baseUrl + self.queryString=queryString + if digilibUrl is not None and len(digilibUrl) > 0: + self.setWithDigilibURL(digilibUrl) + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + def manage_addZogiImageForm(self): """Form for adding""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/addZogiImage.zpt')).__of__(self) return pt() -def manage_addZogiImage(self,id,title,baseUrl, queryString,RESPONSE=None): +def manage_addZogiImage(self,id,title,baseUrl,queryString,digilibUrl=None,RESPONSE=None): """add zogiimage""" newObj=zogiImage(id,title,baseUrl, queryString) self.Destination()._setObject(id,newObj) + if digilibUrl is not None and len(digilibUrl) > 0: + newObj.setWithDigilibURL(digilibUrl) if RESPONSE is not None: RESPONSE.redirect('manage_main')