--- documentViewer/documentViewer.py 2007/06/08 18:10:22 1.27 +++ documentViewer/documentViewer.py 2007/06/29 15:44:40 1.31 @@ -18,6 +18,7 @@ import sys import cgi import urllib import logging +import math import urlparse @@ -31,7 +32,7 @@ def getInt(number, default=0): try: return int(number) except: - return default + return int(default) def getTextFromNode(nodename): """get the cdata content of a node""" @@ -338,9 +339,15 @@ class documentViewer(Folder): bibmap=metaData.generateMappingForType(bibtype) # if there is no mapping bibmap is empty (mapping sometimes has empty fields) 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]) + try: + docinfo['author']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['author'][0])[0]) + except: pass + try: + docinfo['title']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['title'][0])[0]) + except: pass + try: + docinfo['year']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['year'][0])[0]) + except: pass logging.debug("documentViewer (getbibinfofromindexmeta) using mapping for %s"%bibtype) try: docinfo['lang']=getTextFromNode(dom.xpath("//bib/lang")[0]) @@ -418,14 +425,17 @@ class documentViewer(Folder): textUrl=getTextFromNode(textUrls[0]) if urlparse.urlparse(textUrl)[0]=="": #keine url textUrl=os.path.join(archivePath,textUrl) - + # fix URLs starting with /mpiwg/online + if textUrl.startswith("/mpiwg/online"): + textUrl = textUrl.replace("/mpiwg/online",'',1) + docinfo['textURL'] = textUrl presentationUrls=dom.xpath("//texttool/presentation") 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 fuer die Metadaten # durch den relativen Pfad auf die presentation infos presentationUrl=url.replace('index.meta',getTextFromNode(presentationUrls[0])) docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl,docinfo=docinfo,dom=dom) @@ -438,9 +448,18 @@ class documentViewer(Folder): """gets the bibliographical information from the preseantion entry in texttools """ dom=self.getPresentationInfoXML(url) - docinfo['author']=getTextFromNode(dom.xpath("//author")[0]) - docinfo['title']=getTextFromNode(dom.xpath("//title")[0]) - docinfo['year']=getTextFromNode(dom.xpath("//date")[0]) + try: + docinfo['author']=getTextFromNode(dom.xpath("//author")[0]) + except: + pass + try: + docinfo['title']=getTextFromNode(dom.xpath("//title")[0]) + except: + pass + try: + docinfo['year']=getTextFromNode(dom.xpath("//date")[0]) + except: + pass return docinfo def getDocinfoFromImagePath(self,path,docinfo=None): @@ -495,7 +514,8 @@ class documentViewer(Folder): pageinfo['cols'] = cols grpsize = cols * rows pageinfo['groupsize'] = grpsize - start = getInt(start, default=(int(current / grpsize) * grpsize +1)) + start = getInt(start, default=(math.ceil(float(current)/float(grpsize))*grpsize-(grpsize-1))) + # int(current / grpsize) * grpsize +1)) pageinfo['start'] = start pageinfo['end'] = start + grpsize if docinfo is not None: