Diff for /documentViewer/documentViewer.py between versions 1.8 and 1.9

version 1.8, 2006/04/11 17:27:57 version 1.9, 2006/04/12 17:47:53
Line 24  def getInt(number, default=0): Line 24  def getInt(number, default=0):
     except:      except:
         return default          return default
           
   
 def getTextFromNode(nodename):  def getTextFromNode(nodename):
     if nodename is None:      if nodename is None:
         return ""          return ""
Line 35  def getTextFromNode(nodename): Line 34  def getTextFromNode(nodename):
            rc = rc + node.data             rc = rc + node.data
     return rc      return rc
   
           
   def getParentDir(path):
       """returns pathname shortened by one"""
       return '/'.join(path.split('/')[0:-1])
           
   
 import socket  import socket
   
 def urlopen(url,timeout=2):  def urlopen(url,timeout=2):
Line 111  class documentViewer(Folder): Line 116  class documentViewer(Folder):
       
     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"""
         params=cgi.parse_qs(self.REQUEST['QUERY_STRING'])          params=self.REQUEST.form.copy()
         if param is not None:          if param is not None:
             if val is None:              if val is None:
                 if params.has_key(param):                  if params.has_key(param):
                     del params[param]                      del params[param]
             else:              else:
                 params[param] = [str(val)]                  params[param] = str(val)
                                   
         ps = "&".join(["%s=%s"%(k,urllib.quote(v[0])) for (k, v) in params.items()])          # quote values and assemble into query string
         url=self.REQUEST['URL']+"?"+ps          ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()])
         #url=self.REQUEST['URL']+"?"+urllib.urlencode(params, doseq=True)          url=self.REQUEST['URL1']+"?"+ps
         return url          return url
   
           
Line 133  class documentViewer(Folder): Line 138  class documentViewer(Folder):
         else:          else:
             return style                  return style    
                   
     def accessOK(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)
         if access is None:          if access is None:
             # no information - no access (not yet)              # no information - no access 
               #TODO: check
             return True              return True
         elif access == 'free':          elif access == 'free':
             return True              return True
           elif access in self.authgroups:
               # only local access -- only logged in users
               user = getSecurityManager().getUser()
               if user is not None:
                   #print "user: ", user
                   return (user.getUserName() != "Anonymous User")
               else:
                   return False
                   
         print "access: ", access, " authgroups: ", self.authgroups          zLOG.LOG("documentViewer (accessOK)", zLOG.INFO, "unknown access type %s"%access)
         if access in self.authgroups:  
             # local access OK  
             user = getSecurityManager().getUser().getUserName()  
             print "user: ", user  
             return (user != "Anonymous User")  
           
         zLOG.LOG("documentViewer (accessOK)", zLOG.INFO, "unknown access group %s"%access)  
         return False          return False
                                   
                   
Line 162  class documentViewer(Folder): Line 170  class documentViewer(Folder):
           
         zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo from %s"%(imageUrl))          zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo from %s"%(imageUrl))
                   
           for cnt in (1,2,3):
         try:          try:
             dom = NonvalidatingReader.parseUri(imageUrl)              dom = NonvalidatingReader.parseUri(imageUrl)
                   break
         except:          except:
             zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.ERROR, "error reading %s"%(imageUrl))                  zLOG.LOG("documentViewer (getdirinfofromdigilib)", zLOG.ERROR, "error reading %s (try %d)"%(imageUrl,cnt))
           else:
             raise IOError("Unable to get dirinfo from %s"%(imageUrl))              raise IOError("Unable to get dirinfo from %s"%(imageUrl))
                   
         params=dom.xpath("//dir/size")          params=dom.xpath("//dir/size")
Line 179  class documentViewer(Folder): Line 190  class documentViewer(Folder):
         return docinfo          return docinfo
           
                           
       def getIndexMeta(self, url):
           """returns dom of index.meta document at url"""
           dom = None
           if url.startswith("http://"):
               # real URL
               try:
                   dom = NonvalidatingReader.parseUri(url)
               except:
                   zLOG.LOG("documentViewer (getIndexMata)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
                   raise IOError("Unable to get info from %s"%(url))
           else:
               # online path
               server=self.digilibBaseUrl+"/servlet/Texter?fn="
               metaUrl=server+url
               if not metaUrl.endswith("index.meta"):
                   metaUrl += "/index.meta"
               try:
                   dom = NonvalidatingReader.parseUri(metaUrl)
               except:
                   zLOG.LOG("documentViewer (getIndexMata)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
                   raise IOError("Unable to get info from %s"%(url))
                    
           return dom
                           
           
     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 url or given by dom"""          """gets authorization info from the index.meta file at path or given by dom"""
         zLOG.LOG("documentViewer (getbibinfofromindexmeta)", zLOG.INFO,"path: %s"%(path))          zLOG.LOG("documentViewer (getbibinfofromindexmeta)", zLOG.INFO,"path: %s"%(path))
                   
         access = None          access = None
Line 189  class documentViewer(Folder): Line 225  class documentViewer(Folder):
             docinfo = {}              docinfo = {}
                           
         if dom is None:          if dom is None:
             server=self.digilibBaseUrl+"/servlet/Texter?fn="              dom = self.getIndexMeta(getParentDir(path))
             path="/".join(path.split("/")[0:-1])  
             metaUrl=server+path+"/index.meta"  
             try:  
                 dom = NonvalidatingReader.parseUri(metaUrl)  
             except:  
                 return docinfo  
                           
         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):
             access=acctype[0].value              access=acctype[0].value
             if access == 'group':              if access in ['group', 'institution']:
                 access = getTextFromNode(dom.xpath("//access-conditions/access/name")[0]).lower()                  access = getTextFromNode(dom.xpath("//access-conditions/access/name")[0]).lower()
                           
         docinfo['accessType'] = access          docinfo['accessType'] = access
Line 208  class documentViewer(Folder): Line 238  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 url 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))          zLOG.LOG("documentViewer (getbibinfofromindexmeta)", zLOG.INFO,"path: %s"%(path))
                   
         if docinfo is None:          if docinfo is None:
             docinfo = {}              docinfo = {}
                           
         if dom is None:          if dom is None:
             server=self.digilibBaseUrl+"/servlet/Texter?fn="              dom = self.getIndexMeta(getParentDir(path))
             path="/".join(path.split("/")[0:-1])  
             metaUrl=server+path+"/index.meta"  
             try:  
                 dom = NonvalidatingReader.parseUri(metaUrl)  
             except:  
                 return docinfo  
                   
         metaData=self.metadata.main.meta.bib          metaData=self.metadata.main.meta.bib
         bibtype=dom.xpath("//bib/@type")          bibtype=dom.xpath("//bib/@type")
Line 231  class documentViewer(Folder): Line 255  class documentViewer(Folder):
             bibtype="generic"              bibtype="generic"
         bibtype=bibtype.replace("-"," ") # wrong typesiin index meta "-" instead of " " (not wrong! ROC)          bibtype=bibtype.replace("-"," ") # wrong typesiin index meta "-" instead of " " (not wrong! ROC)
         bibmap=metaData.generateMappingForType(bibtype)          bibmap=metaData.generateMappingForType(bibtype)
         print "bibmap: ", bibmap, " for: ", bibtype          #print "bibmap: ", bibmap, " for: ", bibtype
         # if there is no mapping bibmap is empty (mapping sometimes has empty fields)          # if there is no mapping bibmap is empty (mapping sometimes has empty fields)
         if len(bibmap) > 0 and len(bibmap['author'][0]) > 0:          if len(bibmap) > 0 and len(bibmap['author'][0]) > 0:
             docinfo['author']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['author'][0])[0])              docinfo['author']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['author'][0])[0])
Line 248  class documentViewer(Folder): Line 272  class documentViewer(Folder):
            docinfo = {}             docinfo = {}
                         
        if dom is None:         if dom is None:
            try:             dom = self.getIndexMeta(url)
                dom = NonvalidatingReader.parseUri(url)  
            except:  
                zLOG.LOG("documentViewer (parseUrlTexttool)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])  
                raise IOError("Unable to get texttool info from %s"%(url))  
                 
        archiveNames=dom.xpath("//resource/name")         archiveNames=dom.xpath("//resource/name")
        if archiveNames and (len(archiveNames)>0):         if archiveNames and (len(archiveNames)>0):
Line 269  class documentViewer(Folder): Line 289  class documentViewer(Folder):
        else:         else:
            archivePath=None             archivePath=None
                 
        images=dom.xpath("//texttool/image")         imageDirs=dom.xpath("//texttool/image")
        if images and (len(images)>0):         if imageDirs and (len(imageDirs)>0):
            image=getTextFromNode(images[0])             imageDir=getTextFromNode(imageDirs[0])
        else:         else:
            image=None             imageDir=None
                         
        if image and archivePath:         if imageDir and archivePath:
            print "image: ", image, " archivepath: ", archivePath             #print "image: ", imageDir, " archivepath: ", archivePath
            image=os.path.join(archivePath,image)             imageDir=os.path.join(archivePath,imageDir)
            image=image.replace("/mpiwg/online",'')             imageDir=imageDir.replace("/mpiwg/online",'')
            docinfo=self.getDirinfoFromDigilib(image,docinfo=docinfo)             docinfo=self.getDirinfoFromDigilib(imageDir,docinfo=docinfo)
            docinfo['imagePath'] = image             docinfo['imagePath'] = imageDir
            docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+image             docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+imageDir
                         
        viewerUrls=dom.xpath("//texttool/digiliburlprefix")         viewerUrls=dom.xpath("//texttool/digiliburlprefix")
        if viewerUrls and (len(viewerUrls)>0):         if viewerUrls and (len(viewerUrls)>0):
Line 365  class documentViewer(Folder): Line 385  class documentViewer(Folder):
         if mode=="texttool": #index.meta with texttool information          if mode=="texttool": #index.meta with texttool information
             (viewerUrl,imagepath,textpath)=parseUrlTextTool(url)              (viewerUrl,imagepath,textpath)=parseUrlTextTool(url)
                   
         print textpath          #print textpath
         try:          try:
             dom = NonvalidatingReader.parseUri(textpath)              dom = NonvalidatingReader.parseUri(textpath)
         except:          except:

Removed from v.1.8  
changed lines
  Added in v.1.9


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