Changeset 31:c6451e8d5d23 in documentViewer


Ignore:
Timestamp:
Apr 10, 2006, 7:51:50 PM (18 years ago)
Author:
casties
Branch:
default
Message:

more small fixes - now version 0.2.2

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • documentViewer.py

    r29 r31  
    1515
    1616import os.path
     17import sys
    1718import cgi
    1819import urllib
     
    4344        socket.setdefaulttimeout(5)
    4445        return ret
    45    
    46    
    4746
    4847
     
    9897        if not hasattr(self, 'template'):
    9998            # create template folder if it doesn't exist
    100             print "no template folder -- creating"
    10199            self.manage_addFolder('template')
    102100           
     
    114112        params=cgi.parse_qs(self.REQUEST['QUERY_STRING'])
    115113        if param is not None:
    116             if val is None and params.has_key(param):
    117                 del params[param]
     114            if val is None:
     115                if params.has_key(param):
     116                    del params[param]
    118117            else:
    119                 params[param] = val
    120        
    121         url=self.REQUEST['URL']+"?"+urllib.urlencode(params, doseq=True)
     118                params[param] = [str(val)]
     119               
     120        ps = "&".join(["%s=%s"%(k,urllib.quote(v[0])) for (k, v) in params.items()])
     121        url=self.REQUEST['URL']+"?"+ps
     122        #url=self.REQUEST['URL']+"?"+urllib.urlencode(params, doseq=True)
    122123        return url
    123124
     
    132133       
    133134       
    134     def getParamFromDigilib(self,path,param):
     135    def getDirinfoFromDigilib(self,path,docinfo=None):
    135136        """gibt param von dlInfo aus"""
     137        if docinfo is None:
     138            docinfo = {}
     139           
    136140        imageUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path
    137141   
    138         zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo (%s) from %s"%(param,imageUrl))
     142        zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo from %s"%(imageUrl))
    139143       
    140144        try:
    141145            dom = NonvalidatingReader.parseUri(imageUrl)
    142146        except:
    143             return None
    144        
    145         params=dom.xpath("//dir/%s"%param)
    146         zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:%s"%params)
     147            zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.ERROR, "error reading %s"%(imageUrl))
     148            raise IOError("Unable to get dirinfo from %s"%(imageUrl))
     149       
     150        params=dom.xpath("//dir/size")
     151        zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:size"%params)
    147152       
    148153        if params:
    149             return getTextFromNode(params[0])
     154            docinfo['numPages'] = getTextFromNode(params[0])
     155        else:
     156            docinfo['numPages'] = 0
     157                       
     158        return docinfo
    150159           
    151160   
     
    158167           
    159168        if dom is None:
    160             server="http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary/servlet/Texter?fn="
     169            server=self.digilibBaseUrl+"/servlet/Texter?fn="
    161170            path="/".join(path.split("/")[0:-1])
    162171            metaUrl=server+path+"/index.meta"
     
    174183        bibtype=bibtype.replace("-"," ") # wrong typesiin index meta "-" instead of " " (not wrong! ROC)
    175184        bibmap=metaData.generateMappingForType(bibtype)
    176         if len(bibmap) > 0:
     185        print "bibmap: ", bibmap, " for: ", bibtype
     186        if len(bibmap) > 0 and len(bibmap['author'][0]) > 0:
    177187            docinfo['author']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['author'][0])[0])
    178188            docinfo['title']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['title'][0])[0])
     
    192202       except:
    193203           zLOG.LOG("documentViewer (parseUrlTexttool)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2])
    194            return docinfo
     204           raise IOError("Unable to get texttool info from %s"%(url))
    195205       
    196206       archivePaths=dom.xpath("//resource/archive-path")
    197        
    198207       if archivePaths and (len(archivePaths)>0):
    199208           archivePath=getTextFromNode(archivePaths[0])
     
    202211       
    203212       images=dom.xpath("//texttool/image")
    204        
    205213       if images and (len(images)>0):
    206214           image=getTextFromNode(images[0])
     
    211219           image=os.path.join(archivePath,image)
    212220           image=image.replace("/mpiwg/online",'')
    213            pt=self.getParamFromDigilib(image,'size')
     221           docinfo=self.getDirinfoFromDigilib(image,docinfo=docinfo)
    214222           docinfo['imagePath'] = image
    215            docinfo['numPages'] = pt
     223           docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+image
    216224           
    217225       viewerUrls=dom.xpath("//texttool/digiliburlprefix")
    218        
    219226       if viewerUrls and (len(viewerUrls)>0):
    220227           viewerUrl=getTextFromNode(viewerUrls[0])
    221            docinfo['imageURL'] = viewerURL
     228           docinfo['viewerURL'] = viewerUrl
    222229                 
    223230       textUrls=dom.xpath("//texttool/text")
    224        
    225231       if textUrls and (len(textUrls)>0):
    226232           textUrl=getTextFromNode(textUrls[0])
    227            docinfo['textURL'] = textURL
     233           docinfo['textURL'] = textUrl
    228234                     
    229235       docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom)
     
    238244        path=path.replace("/mpiwg/online","")
    239245        docinfo['imagePath'] = path
    240         pt=self.getParamFromDigilib(path,'size')
    241         docinfo['numPages'] = pt
    242         imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn=%s"%path
     246        docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo)
     247        imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn="+path
    243248        docinfo['imageURL'] = imageUrl
    244249       
     
    282287        pageinfo['groupsize'] = grpsize
    283288        start = getInt(start, default=(int(current / grpsize) * grpsize +1))
    284         print "start3:", start
    285289        pageinfo['start'] = start
    286290        pageinfo['end'] = start + grpsize
  • version.txt

    r28 r31  
    1 DocumentViewer 0.2.1
     1DocumentViewer 0.2.2
  • zpt/viewer_main.zpt

    r27 r31  
    33<link rel="stylesheet" href="template/docuviewer_css" type="text/css">
    44</head>
    5 <body tal:define="docinfo options/docinfo; pageinfo options/pageinfo">
     5<body tal:define="docinfo options/docinfo; pageinfo options/pageinfo" tal:condition="docinfo/numPages">
    66<div tal:replace="structure python:here.template.head_main(docinfo=docinfo)"/>
    77<table border="0" width="100%" height="100%">
     
    1616</table>
    1717</body>
     18<body tal:define="docinfo options/docinfo; pageinfo options/pageinfo" tal:condition="not:docinfo/numPages">
     19<div class="errortext">Sorry, document doesn't exist.</div>
     20</body>
    1821</html>
Note: See TracChangeset for help on using the changeset viewer.