Diff for /documentViewer/documentViewer.py between versions 1.6 and 1.7

version 1.6, 2006/04/10 11:23:18 version 1.7, 2006/04/10 19:51:50
Line 14  from Ft.Xml import EMPTY_NAMESPACE Line 14  from Ft.Xml import EMPTY_NAMESPACE
 import Ft.Xml.XPath  import Ft.Xml.XPath
   
 import os.path  import os.path
   import sys
 import cgi  import cgi
 import urllib  import urllib
 import zLOG  import zLOG
Line 44  def urlopen(url): Line 45  def urlopen(url):
         return ret          return ret
           
           
   
   
 ##  ##
 ## documentViewer class  ## documentViewer class
 ##  ##
Line 97  class documentViewer(Folder): Line 96  class documentViewer(Folder):
                   
         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
             print "no template folder -- creating"  
             self.manage_addFolder('template')              self.manage_addFolder('template')
                           
         if not self.digilibBaseUrl:          if not self.digilibBaseUrl:
Line 113  class documentViewer(Folder): Line 111  class documentViewer(Folder):
         """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=cgi.parse_qs(self.REQUEST['QUERY_STRING'])
         if param is not None:          if param is not None:
             if val is None and params.has_key(param):              if val is None:
                   if params.has_key(param):
                 del params[param]                  del params[param]
             else:              else:
                 params[param] = val                  params[param] = [str(val)]
                   
         url=self.REQUEST['URL']+"?"+urllib.urlencode(params, doseq=True)          ps = "&".join(["%s=%s"%(k,urllib.quote(v[0])) for (k, v) in params.items()])
           url=self.REQUEST['URL']+"?"+ps
           #url=self.REQUEST['URL']+"?"+urllib.urlencode(params, doseq=True)
         return url          return url
   
           
Line 131  class documentViewer(Folder): Line 132  class documentViewer(Folder):
             return style                  return style    
                   
                   
     def getParamFromDigilib(self,path,param):      def getDirinfoFromDigilib(self,path,docinfo=None):
         """gibt param von dlInfo aus"""          """gibt param von dlInfo aus"""
           if docinfo is None:
               docinfo = {}
               
         imageUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path          imageUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path
           
         zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo (%s) from %s"%(param,imageUrl))          zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo from %s"%(imageUrl))
                   
         try:          try:
             dom = NonvalidatingReader.parseUri(imageUrl)              dom = NonvalidatingReader.parseUri(imageUrl)
         except:          except:
             return None              zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.ERROR, "error reading %s"%(imageUrl))
               raise IOError("Unable to get dirinfo from %s"%(imageUrl))
                   
         params=dom.xpath("//dir/%s"%param)          params=dom.xpath("//dir/size")
         zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:%s"%params)          zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:size"%params)
                   
         if params:          if params:
             return getTextFromNode(params[0])              docinfo['numPages'] = getTextFromNode(params[0])
           else:
               docinfo['numPages'] = 0
                           
           return docinfo
                           
           
     def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None):      def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None):
Line 157  class documentViewer(Folder): Line 166  class documentViewer(Folder):
             docinfo = {}              docinfo = {}
                           
         if dom is None:          if dom is None:
             server="http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary/servlet/Texter?fn="              server=self.digilibBaseUrl+"/servlet/Texter?fn="
             path="/".join(path.split("/")[0:-1])              path="/".join(path.split("/")[0:-1])
             metaUrl=server+path+"/index.meta"              metaUrl=server+path+"/index.meta"
             try:              try:
Line 173  class documentViewer(Folder): Line 182  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)
         if len(bibmap) > 0:          print "bibmap: ", bibmap, " for: ", bibtype
           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])
             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])
Line 191  class documentViewer(Folder): Line 201  class documentViewer(Folder):
            dom = NonvalidatingReader.parseUri(url)             dom = NonvalidatingReader.parseUri(url)
        except:         except:
            zLOG.LOG("documentViewer (parseUrlTexttool)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])             zLOG.LOG("documentViewer (parseUrlTexttool)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
            return docinfo             raise IOError("Unable to get texttool info from %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):
            archivePath=getTextFromNode(archivePaths[0])             archivePath=getTextFromNode(archivePaths[0])
        else:         else:
            archivePath=None             archivePath=None
                 
        images=dom.xpath("//texttool/image")         images=dom.xpath("//texttool/image")
          
        if images and (len(images)>0):         if images and (len(images)>0):
            image=getTextFromNode(images[0])             image=getTextFromNode(images[0])
        else:         else:
Line 210  class documentViewer(Folder): Line 218  class documentViewer(Folder):
        if image and archivePath:         if image and archivePath:
            image=os.path.join(archivePath,image)             image=os.path.join(archivePath,image)
            image=image.replace("/mpiwg/online",'')             image=image.replace("/mpiwg/online",'')
            pt=self.getParamFromDigilib(image,'size')             docinfo=self.getDirinfoFromDigilib(image,docinfo=docinfo)
            docinfo['imagePath'] = image             docinfo['imagePath'] = image
            docinfo['numPages'] = pt             docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+image
                         
        viewerUrls=dom.xpath("//texttool/digiliburlprefix")         viewerUrls=dom.xpath("//texttool/digiliburlprefix")
          
        if viewerUrls and (len(viewerUrls)>0):         if viewerUrls and (len(viewerUrls)>0):
            viewerUrl=getTextFromNode(viewerUrls[0])             viewerUrl=getTextFromNode(viewerUrls[0])
            docinfo['imageURL'] = viewerURL             docinfo['viewerURL'] = viewerUrl
                                       
        textUrls=dom.xpath("//texttool/text")         textUrls=dom.xpath("//texttool/text")
          
        if textUrls and (len(textUrls)>0):         if textUrls and (len(textUrls)>0):
            textUrl=getTextFromNode(textUrls[0])             textUrl=getTextFromNode(textUrls[0])
            docinfo['textURL'] = textURL             docinfo['textURL'] = textUrl
                                             
        docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom)         docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom)
        return docinfo         return docinfo
Line 237  class documentViewer(Folder): Line 243  class documentViewer(Folder):
             docinfo = {}              docinfo = {}
         path=path.replace("/mpiwg/online","")          path=path.replace("/mpiwg/online","")
         docinfo['imagePath'] = path          docinfo['imagePath'] = path
         pt=self.getParamFromDigilib(path,'size')          docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo)
         docinfo['numPages'] = pt          imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn="+path
         imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn=%s"%path  
         docinfo['imageURL'] = imageUrl          docinfo['imageURL'] = imageUrl
                   
         docinfo = self.getBibinfoFromIndexMeta(path,docinfo=docinfo)          docinfo = self.getBibinfoFromIndexMeta(path,docinfo=docinfo)
Line 281  class documentViewer(Folder): Line 286  class documentViewer(Folder):
         grpsize = cols * rows          grpsize = cols * rows
         pageinfo['groupsize'] = grpsize          pageinfo['groupsize'] = grpsize
         start = getInt(start, default=(int(current / grpsize) * grpsize +1))          start = getInt(start, default=(int(current / grpsize) * grpsize +1))
         print "start3:", start  
         pageinfo['start'] = start          pageinfo['start'] = start
         pageinfo['end'] = start + grpsize          pageinfo['end'] = start + grpsize
         if docinfo is not None:          if docinfo is not None:

Removed from v.1.6  
changed lines
  Added in v.1.7


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