changeset 31:c6451e8d5d23

more small fixes - now version 0.2.2
author casties
date Mon, 10 Apr 2006 21:51:50 +0200
parents c43d3cd16238
children b25c89d693cf
files documentViewer.py version.txt zpt/viewer_main.zpt
diffstat 3 files changed, 38 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/documentViewer.py	Mon Apr 10 13:23:18 2006 +0200
+++ b/documentViewer.py	Mon Apr 10 21:51:50 2006 +0200
@@ -14,6 +14,7 @@
 import Ft.Xml.XPath
 
 import os.path
+import sys
 import cgi
 import urllib
 import zLOG
@@ -42,8 +43,6 @@
         ret=urllib.urlopen(url)
         socket.setdefaulttimeout(5)
         return ret
-    
-    
 
 
 ##
@@ -97,7 +96,6 @@
         
         if not hasattr(self, 'template'):
             # create template folder if it doesn't exist
-            print "no template folder -- creating"
             self.manage_addFolder('template')
             
         if not self.digilibBaseUrl:
@@ -113,12 +111,15 @@
         """link to documentviewer with parameter param set to val"""
         params=cgi.parse_qs(self.REQUEST['QUERY_STRING'])
         if param is not None:
-            if val is None and params.has_key(param):
-                del params[param]
+            if val is None:
+                if params.has_key(param):
+                    del params[param]
             else:
-                params[param] = val
-        
-        url=self.REQUEST['URL']+"?"+urllib.urlencode(params, doseq=True)
+                params[param] = [str(val)]
+                
+        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
 
     
@@ -131,22 +132,30 @@
             return style    
         
         
-    def getParamFromDigilib(self,path,param):
+    def getDirinfoFromDigilib(self,path,docinfo=None):
         """gibt param von dlInfo aus"""
+        if docinfo is None:
+            docinfo = {}
+            
         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:
             dom = NonvalidatingReader.parseUri(imageUrl)
         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)
-        zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:%s"%params)
+        params=dom.xpath("//dir/size")
+        zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:size"%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):
@@ -157,7 +166,7 @@
             docinfo = {}
             
         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])
             metaUrl=server+path+"/index.meta"
             try:
@@ -173,7 +182,8 @@
             bibtype="generic"
         bibtype=bibtype.replace("-"," ") # wrong typesiin index meta "-" instead of " " (not wrong! ROC)
         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['title']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['title'][0])[0])
             docinfo['year']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['year'][0])[0])
@@ -191,17 +201,15 @@
            dom = NonvalidatingReader.parseUri(url)
        except:
            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")
-       
        if archivePaths and (len(archivePaths)>0):
            archivePath=getTextFromNode(archivePaths[0])
        else:
            archivePath=None
        
        images=dom.xpath("//texttool/image")
-       
        if images and (len(images)>0):
            image=getTextFromNode(images[0])
        else:
@@ -210,21 +218,19 @@
        if image and archivePath:
            image=os.path.join(archivePath,image)
            image=image.replace("/mpiwg/online",'')
-           pt=self.getParamFromDigilib(image,'size')
+           docinfo=self.getDirinfoFromDigilib(image,docinfo=docinfo)
            docinfo['imagePath'] = image
-           docinfo['numPages'] = pt
+           docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+image
            
        viewerUrls=dom.xpath("//texttool/digiliburlprefix")
-       
        if viewerUrls and (len(viewerUrls)>0):
            viewerUrl=getTextFromNode(viewerUrls[0])
-           docinfo['imageURL'] = viewerURL
+           docinfo['viewerURL'] = viewerUrl
                   
        textUrls=dom.xpath("//texttool/text")
-       
        if textUrls and (len(textUrls)>0):
            textUrl=getTextFromNode(textUrls[0])
-           docinfo['textURL'] = textURL
+           docinfo['textURL'] = textUrl
                      
        docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom)
        return docinfo
@@ -237,9 +243,8 @@
             docinfo = {}
         path=path.replace("/mpiwg/online","")
         docinfo['imagePath'] = path
-        pt=self.getParamFromDigilib(path,'size')
-        docinfo['numPages'] = pt
-        imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn=%s"%path
+        docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo)
+        imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn="+path
         docinfo['imageURL'] = imageUrl
         
         docinfo = self.getBibinfoFromIndexMeta(path,docinfo=docinfo)
@@ -281,7 +286,6 @@
         grpsize = cols * rows
         pageinfo['groupsize'] = grpsize
         start = getInt(start, default=(int(current / grpsize) * grpsize +1))
-        print "start3:", start
         pageinfo['start'] = start
         pageinfo['end'] = start + grpsize
         if docinfo is not None:
--- a/version.txt	Mon Apr 10 13:23:18 2006 +0200
+++ b/version.txt	Mon Apr 10 21:51:50 2006 +0200
@@ -1,1 +1,1 @@
-DocumentViewer 0.2.1
\ No newline at end of file
+DocumentViewer 0.2.2
\ No newline at end of file
--- a/zpt/viewer_main.zpt	Mon Apr 10 13:23:18 2006 +0200
+++ b/zpt/viewer_main.zpt	Mon Apr 10 21:51:50 2006 +0200
@@ -2,7 +2,7 @@
 <head>
 <link rel="stylesheet" href="template/docuviewer_css" type="text/css">
 </head>
-<body tal:define="docinfo options/docinfo; pageinfo options/pageinfo">
+<body tal:define="docinfo options/docinfo; pageinfo options/pageinfo" tal:condition="docinfo/numPages">
 <div tal:replace="structure python:here.template.head_main(docinfo=docinfo)"/>
 <table border="0" width="100%" height="100%">
   <tr>
@@ -15,4 +15,7 @@
   </tr>
 </table>
 </body>
+<body tal:define="docinfo options/docinfo; pageinfo options/pageinfo" tal:condition="not:docinfo/numPages">
+<div class="errortext">Sorry, document doesn't exist.</div>
+</body>
 </html>