Diff for /documentViewer/documentViewer.py between versions 1.175.2.7 and 1.175.2.10

version 1.175.2.7, 2011/07/20 19:36:57 version 1.175.2.10, 2011/07/28 13:00:07
Line 102  def getParentDir(path): Line 102  def getParentDir(path):
     """returns pathname shortened by one"""      """returns pathname shortened by one"""
     return '/'.join(path.split('/')[0:-1])      return '/'.join(path.split('/')[0:-1])
                   
 def normalizeBibtype(bt):  
     """returns normalised bib type for looking up mappings"""  
     bt = bt.strip().replace(' ', '-').lower()  
     return bt  
   
 def getBibdataFromDom(dom):  
     """returns dict with all elements from bib-tag"""  
     bibinfo = {}  
     bib = dom.find(".//meta/bib")  
     if bib is not None:  
         # put type in @type  
         type = bib.get('type')  
         bibinfo['@type'] = normalizeBibtype(type)  
         # put all subelements in dict  
         for e in bib:  
             bibinfo[e.tag] = getText(e)  
               
     return bibinfo  
   
 ##  ##
 ## documentViewer class  ## documentViewer class
Line 133  class documentViewer(Folder): Line 115  class documentViewer(Folder):
         {'label':'main config','action':'changeDocumentViewerForm'},          {'label':'main config','action':'changeDocumentViewerForm'},
         )          )
   
       metadataService = None
       """MetaDataFolder instance"""
   
     # templates and forms      # templates and forms
     viewer_main = PageTemplateFile('zpt/viewer_main', globals())      viewer_main = PageTemplateFile('zpt/viewer_main', globals())
     toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals())      toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals())
Line 151  class documentViewer(Folder): Line 136  class documentViewer(Folder):
           
           
     thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals())      thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals())
     security.declareProtected('View management screens','changeDocumentViewerForm')      
     changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())  
   
           
     def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"):      def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"):
Line 175  class documentViewer(Folder): Line 158  class documentViewer(Folder):
             templateFolder._setObject('fulltextclient',textServer)              templateFolder._setObject('fulltextclient',textServer)
         except Exception, e:          except Exception, e:
             logging.error("Unable to create MpdlXmlTextServer for fulltextclient: "+str(e))              logging.error("Unable to create MpdlXmlTextServer for fulltextclient: "+str(e))
               
         try:          try:
             from Products.zogiLib.zogiLib import zogiLib              from Products.zogiLib.zogiLib import zogiLib
             zogilib = zogiLib(id="zogilib", title="zogilib for docuviewer", dlServerURL=imageScalerUrl, layout="book")              zogilib = zogiLib(id="zogilib", title="zogilib for docuviewer", dlServerURL=imageScalerUrl, layout="book")
Line 183  class documentViewer(Folder): Line 167  class documentViewer(Folder):
         except Exception, e:          except Exception, e:
             logging.error("Unable to create zogiLib for zogilib: "+str(e))              logging.error("Unable to create zogiLib for zogilib: "+str(e))
                   
           try:
               # assume MetaDataFolder instance is called metadata 
               self.metadataService = getattr(self, 'metadata')
           except Exception, e:
               logging.error("Unable to find MetaDataFolder 'metadata': "+str(e))
               
                   
     # proxy text server methods to fulltextclient      # proxy text server methods to fulltextclient
     def getTextPage(self, **args):      def getTextPage(self, **args):
Line 577  class documentViewer(Folder): Line 567  class documentViewer(Folder):
         docinfo['indexMetaPath']=self.getIndexMetaPath(path);          docinfo['indexMetaPath']=self.getIndexMetaPath(path);
                   
         logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path))          logging.debug("documentViewer (getbibinfofromindexmeta cutted) path: %s"%(path))
           if self.metadataService is not None:
         # put all raw bib fields in dict "bib"          # put all raw bib fields in dict "bib"
         bib = getBibdataFromDom(dom)              bib = self.metadataService.getBibData(dom=dom)
         docinfo['bib'] = bib          docinfo['bib'] = bib
         bibtype = bib.get('@type', None)          bibtype = bib.get('@type', None)
         docinfo['bib_type'] = bibtype          docinfo['bib_type'] = bibtype
         if bibtype:              # also store DC metadata for convenience
             # also store standard mapped metadata for convenience              dc = self.metadataService.getDCMappedData(bib)
             try:              docinfo['creator'] = dc.get('creator',None)
                 stdbib = self.metadata.getStdMappedHash(bib)              docinfo['title'] = dc.get('title',None)
                 docinfo['std_bib'] = stdbib              docinfo['date'] = dc.get('date',None)
                 docinfo['author'] = stdbib['author']          else:
                 docinfo['title'] = stdbib['title']              logging.error("MetadataService not found!")
                 docinfo['year'] = stdbib['year']  
             except:  
                 pass  
   
         return docinfo          return docinfo
           
           
Line 611  class documentViewer(Folder): Line 598  class documentViewer(Folder):
         logging.debug("documentViewer docinfo[name] %s"%docinfo['name'])          logging.debug("documentViewer docinfo[name] %s"%docinfo['name'])
         return docinfo          return docinfo
           
       
     def getDocinfoFromTextTool(self, url, dom=None, docinfo=None):      def getDocinfoFromTextTool(self, url, dom=None, docinfo=None):
         """parse texttool tag in index meta"""          """parse texttool tag in index meta"""
         logging.debug("documentViewer (getdocinfofromtexttool) url: %s" % (url))          logging.debug("documentViewer (getdocinfofromtexttool) url: %s" % (url))
Line 621  class documentViewer(Folder): Line 609  class documentViewer(Folder):
         if dom is None:          if dom is None:
             dom = self.getDomFromIndexMeta(url)              dom = self.getDomFromIndexMeta(url)
                   
           texttool = self.metadata.getTexttoolData(dom=dom)
           
         archivePath = None          archivePath = None
         archiveName = None          archiveName = None
           
Line 645  class documentViewer(Folder): Line 635  class documentViewer(Folder):
             # we balk without archive-path              # we balk without archive-path
             raise IOError("Missing archive-path (for text-tool) in %s" % (url))              raise IOError("Missing archive-path (for text-tool) in %s" % (url))
                   
         imageDir = getText(dom.find(".//texttool/image"))          imageDir = texttool.get('image', None)
                           
         if not imageDir:          if not imageDir:
             # we balk with no image tag / not necessary anymore because textmode is now standard              # we balk with no image tag / not necessary anymore because textmode is now standard
Line 664  class documentViewer(Folder): Line 654  class documentViewer(Folder):
                           
             docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + imageDir              docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + imageDir
                           
         viewerUrl = getText(dom.find(".//texttool/digiliburlprefix"))          viewerUrl = texttool.get('digiliburlprefix', None)
         if viewerUrl:          if viewerUrl:
             docinfo['viewerURL'] = viewerUrl              docinfo['viewerURL'] = viewerUrl
                   
         # old style text URL          # old style text URL
         textUrl = getText(dom.find(".//texttool/text"))          textUrl = texttool.get('text', None)
         if textUrl:          if textUrl:
             if urlparse.urlparse(textUrl)[0] == "": #keine url              if urlparse.urlparse(textUrl)[0] == "": #keine url
                 textUrl = os.path.join(archivePath, textUrl)                   textUrl = os.path.join(archivePath, textUrl) 
Line 680  class documentViewer(Folder): Line 670  class documentViewer(Folder):
             docinfo['textURL'] = textUrl              docinfo['textURL'] = textUrl
           
         # new style text-url-path          # new style text-url-path
         textUrl = getText(dom.find(".//texttool/text-url-path"))          textUrl = texttool.get('text-url-path', None)
         if textUrl:          if textUrl:
             docinfo['textURLPath'] = textUrl              docinfo['textURLPath'] = textUrl
             textUrlkurz = string.split(textUrl, ".")[0]              textUrlkurz = string.split(textUrl, ".")[0]
Line 689  class documentViewer(Folder): Line 679  class documentViewer(Folder):
                 # text-only, no page images                  # text-only, no page images
                 #docinfo = self.getNumTextPages(docinfo)                  #docinfo = self.getNumTextPages(docinfo)
                                       
                    # get bib info
         presentationUrl = getText(dom.find(".//texttool/presentation"))  
         docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom)   # get info von bib tag          docinfo = self.getBibinfoFromIndexMeta(url, docinfo=docinfo, dom=dom)   # get info von bib tag
         # TODO: is this needed here?          # TODO: is this needed here?
         docinfo = self.getNameFromIndexMeta(url, docinfo=docinfo, dom=dom)          docinfo = self.getNameFromIndexMeta(url, docinfo=docinfo, dom=dom)
                   
                   # TODO: what to do with presentation?
           presentationUrl = texttool.get('presentation', None)
         if presentationUrl: # ueberschreibe diese durch presentation informationen           if presentationUrl: # ueberschreibe diese durch presentation informationen 
              # presentation url ergiebt sich ersetzen von index.meta in der url der fuer 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               # durch den relativen Pfad auf die presentation infos
Line 707  class documentViewer(Folder): Line 697  class documentViewer(Folder):
                                   
             docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl, docinfo=docinfo, dom=dom)              docinfo = self.getBibinfoFromTextToolPresentation(presentationUrl, docinfo=docinfo, dom=dom)
           
           # get authorization
         docinfo = self.getAuthinfoFromIndexMeta(url, docinfo=docinfo, dom=dom)   # get access info          docinfo = self.getAuthinfoFromIndexMeta(url, docinfo=docinfo, dom=dom)   # get access info
                   
         return docinfo          return docinfo
Line 835  class documentViewer(Folder): Line 826  class documentViewer(Folder):
         return pageinfo          return pageinfo
   
           
       security.declareProtected('View management screens','changeDocumentViewerForm')    
       changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
       
     def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None):      def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None):
         """init document viewer"""          """init document viewer"""
         self.title=title          self.title=title
Line 842  class documentViewer(Folder): Line 836  class documentViewer(Folder):
         self.thumbrows = thumbrows          self.thumbrows = thumbrows
         self.thumbcols = thumbcols          self.thumbcols = thumbcols
         self.authgroups = [s.strip().lower() for s in authgroups.split(',')]          self.authgroups = [s.strip().lower() for s in authgroups.split(',')]
           try:
               # assume MetaDataFolder instance is called metadata 
               self.metadataService = getattr(self, 'metadata')
           except Exception, e:
               logging.error("Unable to find MetaDataFolder 'metadata': "+str(e))
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
                   

Removed from v.1.175.2.7  
changed lines
  Added in v.1.175.2.10


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