Diff for /zogiLib/zogiLib.py between versions 1.35 and 1.45

version 1.35, 2004/07/22 17:19:22 version 1.45, 2004/10/04 19:36:54
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:21.7.2004"  ZOGIVERSION = "0.9.9 ROC:28.8.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 350  class zogiImage(Image): Line 351  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 388  class zogiLib(Folder): Line 390  class zogiLib(Folder):
             {'label':'Main Config','action':'changeZogiLibForm'},              {'label':'Main Config','action':'changeZogiLibForm'},
             )              )
   
     def __init__(self, id, title, dlServerURL,localFileBase, version="book", basePath="", dlTarget=None):      def __init__(self, id, title, dlServerURL, layout="book", basePath="", dlTarget=None, dlToolbarBaseURL=None):
         """init"""          """init"""
   
         self.id=id          self.id=id
         self.title=title          self.title=title
         self.dlServerURL = dlServerURL          self.dlServerURL = dlServerURL
   
         self.localFileBase=localFileBase  
         self.basePath=basePath          self.basePath=basePath
         self.layout=version          self.layout=layout
         if dlTarget:  
             self.dlTarget = dlTarget              self.dlTarget = dlTarget
   
           if dlToolbarBaseURL:
               self.dlToolbarBaseURL = dlToolbarBaseURL
         else:          else:
             self.dlTarget = "digilib"              self.dlToolbarBaseURL = dlServerURL + "/digimage.jsp?"
   
   
     def version(self):      def version(self):
         """version information"""          """version information"""
Line 448  class zogiLib(Folder): Line 451  class zogiLib(Folder):
   
             return ret              return ret
         except:          except:
             return ret  
   
     def formatHTML(self,url,label=None,viewUrl=None):              return []
   
   
       def formatHTML(self,url,label=None,viewUrl=None):
   
         sets=xml.dom.minidom.parse(urllib.urlopen(url)).getElementsByTagName('dataset')          sets=xml.dom.minidom.parse(urllib.urlopen(url)).getElementsByTagName('dataset')
         ret=""          ret=""
         print label          print label
Line 471  class zogiLib(Folder): Line 475  class zogiLib(Folder):
             ret+="</table>"              ret+="</table>"
         return ret          return ret
           
       
     def getMetaData(self):      def getMetaData(self):
         """getMetaData"""          """getMetaData"""
         try:          try:
Line 517  class zogiLib(Folder): Line 522  class zogiLib(Folder):
                     return self.formatHTML(link+'fn=%s&pn=%s&object=%s'%(fn,pn,ob),label,url)                      return self.formatHTML(link+'fn=%s&pn=%s&object=%s'%(fn,pn,ob),label,url)
         return ret          return ret
   
   
     def getDLInfo(self):      def getDLInfo(self):
         """get DLInfo from digilib server"""          """get DLInfo from digilib server"""
         paramH={}          paramH={}
         baseUrl=self.dlServerURL+"/dlInfo-xml.jsp"          baseUrl=self.dlServerURL+"/dlInfo-xml.jsp"
         try:          try:
             url=urllib.urlopen(baseUrl+self.REQUEST['QUERY_STRING'])              url=urllib.urlopen(baseUrl+'?'+self.REQUEST['QUERY_STRING'])
             dom=xml.dom.minidom.parse(url)              dom=xml.dom.minidom.parse(url)
             params=dom.getElementsByTagName('parameter')              params=dom.getElementsByTagName('parameter')
             for param in params:              for param in params:
Line 535  class zogiLib(Folder): Line 541  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 632  class zogiLib(Folder): Line 638  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']  
         print "current dltarget: ", self.dlTarget  
     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)
         else:          else:
         finds=self.ZopeFind(self,obj_ids=['viewingTools.zpt'])              tp = "viewingTools.zpt"
         if finds:              if hasattr(self, tp):
                                   pt = getattr(self, tp)
         return finds[0][1]()  
         else:          else:
                 pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow.zpt')).__of__(self)                  pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/optionwindow.zpt')).__of__(self)
                   
                 return pt()                  return pt()
   
     def mark1(self):      def mark1(self):
Line 732  class zogiLib(Folder): Line 735  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 754  class zogiLib(Folder): Line 756  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 764  class zogiLib(Folder): Line 768  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 784  class zogiLib(Folder): Line 788  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 832  class zogiLib(Folder): Line 869  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 844  class zogiLib(Folder): Line 886  class zogiLib(Folder):
   
     def getToolbarPageURL(self):      def getToolbarPageURL(self):
         """returns a toolbar-enabled page URL"""          """returns a toolbar-enabled page URL"""
         url=self.dlServerURL+'/digimage.jsp?'+self.getAllDLParams()          url=self.dlToolbarBaseURL+self.getAllDLParams()
         return url          return url
           
     def getDLTarget(self):      def getDLTarget(self):
         """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 871  class zogiLib(Folder): Line 915  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 903  class zogiLib(Folder): Line 947  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 953  class zogiLib(Folder): Line 998  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 963  class zogiLib(Folder): Line 1008  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 1094  class zogiLib(Folder): Line 1139  class zogiLib(Folder):
         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiLibForm.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/changeZogiLibForm.zpt')).__of__(self)
         return pt()          return pt()
           
     def changeZogiLib(self,title,dlServerURL, localFileBase, version, basePath, dlTarget, RESPONSE=None):      def changeZogiLib(self,title,dlServerURL, version, basePath, dlTarget, dlToolbarBaseURL, RESPONSE=None):
         """change it"""          """change it"""
         self.title=title          self.title=title
         self.dlServerURL=dlServerURL          self.dlServerURL=dlServerURL
         self.localFileBase=localFileBase  
         self.basePath = basePath          self.basePath = basePath
         self.layout=version          self.layout=version
         if dlTarget:  
             self.dlTarget = dlTarget              self.dlTarget = dlTarget
   
           if dlToolbarBaseURL:
               self.dlToolbarBaseURL = dlToolbarBaseURL
         else:          else:
             self.dlTarget = "digilib"              self.dlToolbarBaseURL = dlServerURL + "/digimage.jsp?"
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 1112  class zogiLib(Folder): Line 1158  class zogiLib(Folder):
   
   
     ##      ##
     ## odd stuff      ## odds and ends
     ##      ##
   
     def repairZogilib(self, obj=None):      def repairZogilib(self, obj=None):
Line 1129  class zogiLib(Folder): Line 1175  class zogiLib(Folder):
   
         for entry in entries:          for entry in entries:
             print "  found ", entry              print "  found ", entry
               #
               # replace digilibBaseUrl by dlServerURL
             if hasattr(entry[1], 'digilibBaseUrl'):              if hasattr(entry[1], 'digilibBaseUrl'):
                 msg += "  fixing "+entry[0]+"/n"                  msg += "  fixing digilibBaseUrl in "+entry[0]+"\n"
                 entry[1].dlServerURL = re.sub('/servlet/Scaler?','',entry[1].digilibBaseUrl)                  entry[1].dlServerURL = re.sub('/servlet/Scaler\?','',entry[1].digilibBaseUrl)
                 del entry[1].digilibBaseUrl                  del entry[1].digilibBaseUrl
                                   
               #
               # add dlToolbarBaseURL
               if not hasattr(entry[1], 'dlToolbarBaseURL'):
                   msg += "  fixing dlToolbarBaseURL in "+entry[0]+"\n"
                   entry[1].dlToolbarBaseURL = entry[1].dlServerURL + "/digimage.jsp?"
                   
         return msg+"\n\nfixed all zogilib instances in: "+obj.title          return msg+"\n\nfixed all zogilib instances in: "+obj.title
   
                       
Line 1142  def manage_addZogiLibForm(self): Line 1196  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, localFileBase,version="book",basePath="",dlTarget="digilib",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)      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')

Removed from v.1.35  
changed lines
  Added in v.1.45


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>