Diff for /documentViewer/documentViewer.py between versions 1.21 and 1.24

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:

Removed from v.1.21  
changed lines
  Added in v.1.24


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