Diff for /ImageArchive/ImageArchive.py between versions 1.77 and 1.92

version 1.77, 2006/05/15 08:18:02 version 1.92, 2006/05/22 21:09:53
Line 1 Line 1
 genericServerPath="http://www.mpiwg-berlin.mpg.de/zogilib_images" #can be changed with main config  genericServerPath="http://www.mpiwg-berlin.mpg.de/zogilib_images" #can be changed with main config
   
   
   from Ft.Xml.Domlette import NonvalidatingReader
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from OFS.OrderedFolder import OrderedFolder  from OFS.OrderedFolder import OrderedFolder
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
Line 25  import Queue Line 25  import Queue
 import cgi  import cgi
 import sys  import sys
 import zLOG  import zLOG
   import shutil
   
 from AccessControl import ClassSecurityInfo, getSecurityManager  from AccessControl import ClassSecurityInfo, getSecurityManager
   
Line 286  class ImageDigilib(Folder,Persistent,Imp Line 286  class ImageDigilib(Folder,Persistent,Imp
                   
         )          )
   
   
           
     def getAccessRight(self):      def getAccessRight(self):
         """get the accessright, return is string "extern" or "intern" """          """get the accessright, return is string "extern" or "intern" """
         return self.getRights(self.filename.split('.')[0])          return self.getRights(self.filename.split('.')[0])
Line 388  class ImageDigilib(Folder,Persistent,Imp Line 390  class ImageDigilib(Folder,Persistent,Imp
             os.chmod(filename,0664)              os.chmod(filename,0664)
         except:          except:
             """hack"""              """hack"""
         #scale thumb          #< thumb
                   
         self.scaleThumbs()          self.scaleThumbs()
   
Line 486  class ImageDigilib(Folder,Persistent,Imp Line 488  class ImageDigilib(Folder,Persistent,Imp
   
             self.scaleWorkingVersions()              self.scaleWorkingVersions()
   
               self.scaleToJpg()
             if RESPONSE:              if RESPONSE:
                     RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename)                      RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename)
                   
       def scaleToJpg(self,RESPONSE=None):
           """create a  jpg"""
           
           #create backup of the original file
           
           imagePath=os.path.join(self.ImageStoragePath,self.filename)
           path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir")
                   
           if not os.path.exists(path):
               os.mkdir(path,0775)
               os.chmod(path,0775)
               
           newName=os.path.join(path,self.getId())
   
     def updateImage(self,file,rename=None,RESPONSE=None):          if os.path.exists(newName):
               zLOG.LOG("ImageArchive:scaleToJpg", zLOG.INFO, "%s already exists"%newName)
           else:
               try:
                   os.rename(imagePath,newName)
               except:
                   zLOG.LOG("ImageArchive:scaleToJpg", zLOG.ERROR, "%s "%newName)
                   return False
               
           ext= os.path.splitext(imagePath)[1].lower()
           if ext.rstrip()==".jpg":
           shutil.copy(newName,imagePath)
           print "copy",imagePath
               return True
   
       print "SCALED",imagePath
           dest="/Volumes/paviaExtern/docuserver/images/exhibitionImages/"
           dir=self.getId()
       src=path
           self.scale(dest=dest,dir=dir,src=path,scaleBy=1,RESPONSE=RESPONSE)
           return True
       
       def updateImage(self,_fileupload,_rename=None,RESPONSE=None):
             """lade neues Version des Bildes"""              """lade neues Version des Bildes"""
             #teste ob Dokumenten ordner schon vorhanden              #teste ob Dokumenten ordner schon vorhanden
             #imagePath=os.path.join(self.ImageStoragePath,self.getId())              #imagePath=os.path.join(self.ImageStoragePath,self.getId())
           
           identifyField="filename"
           
           if _fileupload and _fileupload.filename!="":
             imagePath=os.path.join(self.ImageStoragePath,self.filename)              imagePath=os.path.join(self.ImageStoragePath,self.filename)
             path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir")              path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir")
                           
Line 518  class ImageDigilib(Folder,Persistent,Imp Line 559  class ImageDigilib(Folder,Persistent,Imp
         zLOG.LOG("ImageArchive:updateImage", zLOG.ERROR, "rename: %s -> %s didn't work!"%(imagePath,imageNewPath))            zLOG.LOG("ImageArchive:updateImage", zLOG.ERROR, "rename: %s -> %s didn't work!"%(imagePath,imageNewPath))  
   
             #lesen des upload files und schreiben              #lesen des upload files und schreiben
             filedata=file.read()              filedata=_fileupload.read()
             f=open(imagePath,"w") # if we wanted to have filename=id we should do it here!              f=open(imagePath,"w") # if we wanted to have filename=id we should do it here!
             f.write(filedata)              f.write(filedata)
             f.close()              f.close()
             try:              try:
                     os.chmod(imagePath,0664)                      os.chmod(imagePath,0664)
             except:              except:
                     """hack"""                  pass
             #scale thumb              #scale thumb
                   
             self.scaleThumbs()              self.scaleThumbs()
Line 533  class ImageDigilib(Folder,Persistent,Imp Line 574  class ImageDigilib(Folder,Persistent,Imp
             #scale standard              #scale standard
   
             self.scaleWorkingVersions()              self.scaleWorkingVersions()
               self.scaleToJpg()
               if _rename:
                   self.renameImage(_fileupload.filename)
           
   
             if rename:          args=self.REQUEST.form
                 self.renameImage(file.filename)  
                   
           args['-identify']=identifyField+"="+args['_identifyField']
            
           self.ZSQLChange(args=args)
                   
             if RESPONSE:              if RESPONSE:
                     RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename)                      RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename)
Line 647  class ImageCollection(OrderedFolder, Per Line 694  class ImageCollection(OrderedFolder, Per
   
     leiden_meta_fields=['image_id','date','country','place','people','description','photographer']      leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
   
       scaledBasis="/mpiwg/temp/online/scaled"
           
     defaultMetaString="http://fm-web.mpiwg-berlin.mpg.de:8050/FMRes/FMPJS?-db=Wissenschaftlerportraits.fp5&-layID=69&-token=25&-max=1&-format=formvwcss.htm&-mode=browse&images::filename=%s&-find" ## TEST FUER IMAGEDATENBANK WP      defaultMetaString="http://fm-web.mpiwg-berlin.mpg.de:8050/FMRes/FMPJS?-db=Wissenschaftlerportraits.fp5&-layID=69&-token=25&-max=1&-format=formvwcss.htm&-mode=browse&images::filename=%s&-find" ## TEST FUER IMAGEDATENBANK WP
   
Line 655  class ImageCollection(OrderedFolder, Per Line 703  class ImageCollection(OrderedFolder, Per
     imgcoll_thumb = PageTemplateFile('zpt/thumb', globals())      imgcoll_thumb = PageTemplateFile('zpt/thumb', globals())
     imgcoll_thumbMD = PageTemplateFile('zpt/thumbMD', globals())          imgcoll_thumbMD = PageTemplateFile('zpt/thumbMD', globals())    
   
       destBasis="/docuserver/scaled/"
       srcBasis="/docuserver/images"
       def scale(self,dest=None,dir=None,src=None,scaleTo=None,scaleBy=None,RESPONSE=None):
           """scaler"""
           #scaleomatStr="ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ %s"
           scaleomatStr="/docuserver/libs/scaleomat/scaleomat.pl"
   
           destBasis=self.destBasis
           srcBasis=self.srcBasis
           if src:
            srcStr=" -src=%s"%src
           else:
            srcStr=" -src=%s"%srcBasis
   
           scaleStr=scaleomatStr+srcStr
           if dir:
               dirTmp=dir.replace(srcBasis,'')
               dirStr=" -dir=%s"%dirTmp
               scaleStr=scaleStr+dirStr
           elif filename:
               fileTmp=filename.replace(srcBasis,'')
               fileStr=" -dir=%s"%fileTmp
               scaleStr=scaleStr+fileStr
           else:
               zLOG.LOG("ImageCollection:scale",zLOG.ERROR,"no directory or filename given")
               return False
           
           if dest is not None:
               destStr=" -dest=%s"%os.path.join(destBasis,dest)
               scaleStr=scaleStr+destStr
           else:
               zLOG.LOG("ImageCollection:scale",zLOG.ERROR,"no destionation given")
               return False
           
           if scaleTo:
               scaleToStr=" -scaleto=%s"%scaleTo
               scaleStr=scaleStr+scaleToStr
           elif scaleBy:
               scaleByStr=" -scaleby=%s"%scaleBy
               scaleStr=scaleStr+scaleByStr
           else:
               zLOG.LOG("ImageCollection:scale",zLOG.ERROR,"no destionation given")
               return False
        
          
           #ret=scaleStr
           ret=os.popen2(scaleStr,1)[1].read()
    
           if RESPONSE:
                RESPONSE.write(ret)
           return True
    
     def getImageObject(self,name):      def getImageObject(self,name):
         """gibt objeckt name zurueck"""          """gibt objeckt name zurueck"""
         if hasattr(self,name):          if hasattr(self,name):
Line 774  class ImageCollection(OrderedFolder, Per Line 874  class ImageCollection(OrderedFolder, Per
             self.REQUEST.RESPONSE.close()              self.REQUEST.RESPONSE.close()
   
                                           
       def scaleToJpgs(self,RESPONSE=None):
           """scale all tifs to jps"""
   
           for x in self._objects:
                   
                   if (not hasattr(getattr(self,x['id']),'scaleToJpg')) or (not getattr(self,x['id']).scaleToJpg()):
                       if RESPONSE:
                           RESPONSE.write('error:%s'%x)
                   
                   
                                           
     def scaleThumbs(self,RESPONSE=None):      def scaleThumbs(self,RESPONSE=None):
         """scale thumbs"""          """scale thumbs"""
                   
         #scale thumbs          #scale thumbs
         ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath)          dest=os.path.join(self.scaledBasis,'thumb')
           self.scale(dir=self.ImageStoragePath,dest=dest,scaleTo=100,RESPONSE=RESPONSE)
           #ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath)
         if RESPONSE:          if RESPONSE:
                 RESPONSE.write(ret.read())                  RESPONSE.write(ret.read())
                 RESPONSE.write("\n")                  RESPONSE.write("\n")
Line 791  class ImageCollection(OrderedFolder, Per Line 903  class ImageCollection(OrderedFolder, Per
                   
         #scale standard          #scale standard
   
         ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/small -scaleto=2000 &"% self.ImageViewerPath)          dest=os.path.join(self.scaledBasis,'small')
           self.scale(dir=self.ImageStoragePath,dest=dest,scaleTo=1000,RESPONSE=RESPONSE)
           
           dest=os.path.join(self.scaledBasis,'medium')
           self.scale(dir=self.ImageStoragePath,dest=dest,scaleTo=2000,RESPONSE=RESPONSE)
          
           #ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/small -scaleto=2000 &"% self.ImageViewerPath)
         if RESPONSE:          if RESPONSE:
                 RESPONSE.write(ret.read())                  RESPONSE.write(ret.read())
                 RESPONSE.write("\n")                  RESPONSE.write("\n")
         return "rescaling started"          return "rescaling started"
   
   
       
     def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,serverPath=genericServerPath):      def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,serverPath=genericServerPath):
         self.id=id          self.id=id
         self.title=title          self.title=title
Line 1048  class ImageCollection(OrderedFolder, Per Line 1165  class ImageCollection(OrderedFolder, Per
         ret=""          ret=""
         #print self.__dict__          #print self.__dict__
         for file in files:          for file in files:
             if not file[0]==".":          fn=os.path.splitext(file)[0]
                 if self.__dict__.has_key(file):              if not (file[0]=="."):
                   if self.__dict__.has_key(file) or self.__dict__.has_key(fn+'.tif') or self.__dict__.has_key(fn+'.tiff') :
   
                     ret=ret+"<br>"+file+" already exists!"                      ret=ret+"<br>"+file+" already exists!"
                 else:                  else:
Line 1119  class ImageCollection(OrderedFolder, Per Line 1237  class ImageCollection(OrderedFolder, Per
   
                 #scale thumb                  #scale thumb
                   
         #self.scaleThumbs()          self.scaleThumbs()
   
         #scale standard          #scale standard
   
         #self.scaleWorkingVersions()          self.scaleWorkingVersions()
                   
         if RESPONSE:          if RESPONSE:
                 RESPONSE.redirect('manage_main')                  RESPONSE.redirect('manage_main')
Line 1134  class ImageCollection(OrderedFolder, Per Line 1252  class ImageCollection(OrderedFolder, Per
         ret=""          ret=""
         #print self.__dict__          #print self.__dict__
         for file in files:          for file in files:
             if not file[0]==".":          fn=os.path.splitext(file)[0]
                 if self.__dict__.has_key(file):              if not (file[0]=="."):
                   if self.__dict__.has_key(file) or self.__dict__.has_key(fn+'.tif') or self.__dict__.has_key(fn+'.tiff') :
   
                     ret=ret+"<br>"+file+" already exists!"                      ret=ret+"<br>"+file+" already exists!"
   
                 else:                  else:
                     ret=ret+"<br>"+file+" created!"                      ret=ret+"<br>"+file+" created!"
                     newObj=ImageDigilib(file,file)                      newObj=ImageDigilib(file,file)
Line 1621  class ImageCollection(OrderedFolder, Per Line 1741  class ImageCollection(OrderedFolder, Per
   
     def getImageByName(self,filename,onlyName=None):      def getImageByName(self,filename,onlyName=None):
         """get filename"""          """get filename"""
         print repr(filename)          #print repr(filename)
         #FIXME: umlaute in filename          #FIXME: umlaute in filename
         fn=getattr(self,repr(filename),None)          fn=getattr(self,repr(filename),None)
         if not fn:          if not fn:
             filenameM=filename.split(".")[0]              filenameM=filename.split(".")[0]
                               
             founds=self.ZopeFind(self,obj_metatypes=['ImageDigilib'])              founds=self.ZopeFind(self,obj_metatypes=['ImageDigilib'])
   
   
             for found in founds:              for found in founds:
                 foundM=found[0].split(".")[0]                  foundM=found[0].split(".")[0]
   
                 if filenameM.lower()==foundM.lower():                  if filenameM.lower()==foundM.lower():
                     if onlyName:                      if onlyName:
                         return found[0]                          return found[0]
                     else:                      else:
                         return found[1]                          return found[1]
                   #HACK teste noch ob am ende des filenames eventuell ein "_" und loesche das.    
                   if foundM[-1]=="_":
                       foundM=foundM[0:-1]
   
                       if filenameM.lower()==foundM.lower():
                           if onlyName:
                               return found[0]
                           else:
                               return found[1]   
                   
         if onlyName:          if onlyName:
             return filename              return filename
         else:          else:
Line 1731  class ImageCollectionMD(ImageCollection, Line 1865  class ImageCollectionMD(ImageCollection,
         pass          pass
           
       
       def ImportFiles(self,RESPONSE=None):
           """Import the existing files of a folder"""
           files=os.listdir(self.ImageStoragePath)
           ret=""
           #print self.__dict__
           for file in files:
   
               if not (file[0]=="."):
           fn=os.path.splitext(file)[0]
                   if self.__dict__.has_key(file) or self.__dict__.has_key(fn+'.tif') or self.__dict__.has_key(fn+'.tiff') :
   
                       ret=ret+"<br>"+file+" already exists!"
   
                   else:
                       ret=ret+"<br>"+file+" created!"
                       newObj=ImageDigilib(file,file)
                       #print newObj,file
                       #print newObj
                       try:
                           self._setObject(file,newObj)
                       except:
                           """nothing yet"""
                           
                       
                       args={}
                       args['_table']=self.imageCollectionConfig.getTable()
                       args[self.imageCollectionConfig.getKey()]=file
                       
                       if not self.ZSQLInlineSearch(args=args):
                           self.ZSQLAdd(args=args)    
           #print ret
           #pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self)
           #print self.ImageStoragePath
   
                   #scale thumb
           
           
           self.scaleThumbs()
   
           #scale standard
   
           self.scaleWorkingVersions()
           
           self.scaleToJpgs()
           
           if RESPONSE:
                   RESPONSE.redirect('manage_main')
     
     def addImage(self):      def addImage(self):
         """Add an Image"""          """Add an Image"""
                                   
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImageMD.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImageMD.zpt')).__of__(self)
         return pt()          return pt()
           
     def addImage2(self,_fileupload,_fileName=None,_meta=None,_use_default=None,RESPONSE=None,**argv):      def addImage2(self,_fileupload,_fileName=None,_meta=None,_use_default=None,RESPONSE=None):
         """Add"""          """Add"""
   
         filenameKey="filename"          filenameKey="filename"
Line 1755  class ImageCollectionMD(ImageCollection, Line 1937  class ImageCollectionMD(ImageCollection,
                   
         manage_AddImageDigilib(self,fn,_fileupload,meta=meta)          manage_AddImageDigilib(self,fn,_fileupload,meta=meta)
                   
         args[key]=_filename          args=self.REQUEST.form
           args[filenameKey]=fn
                   
         self.ZSQLAdd(args=argv)          self.ZSQLAdd(args=args)
                   
           self.scaleThumbs()
           self.scaleWorkingVersions()
           
           getattr(self,fn).scaleToJpg()
         if RESPONSE:          if RESPONSE:
             return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn)              return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn)
         #return  self.REQUEST['URL1']+'/'+fileupload.filename          #return  self.REQUEST['URL1']+'/'+fileupload.filename
Line 1802  class ImageCollectionMD(ImageCollection, Line 1989  class ImageCollectionMD(ImageCollection,
   
     def searchDB(self,REQUEST=None,RESPONSE=None,xml=None):      def searchDB(self,REQUEST=None,RESPONSE=None,xml=None):
         """search"""          """search"""
         #context.ZSQLFind(_table='vision_main')  
         urlTmp=REQUEST['URL1']  
                   
         url=urlTmp+'/searchResultXML?-table=vision_main&'+REQUEST['QUERY_STRING']          rc=[]
           fnIds={}
           for found in self.ZSQLInlineSearch(args=self.REQUEST.form):
               key=getattr(found,self.imageCollectionConfig.getKey())
               key=self.getImageByName(key,onlyName="yes")        
               rc.append((key,'',0))
               fnIds[key]=('',0)
                   
           rc.sort()
           self.REQUEST.SESSION['filenames']=rc
           self.REQUEST.SESSION['filenamesIds']=fnIds
           
           overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html'])
                   
         if xml is None:          if overview:
             RESPONSE.redirect('xmlinput?url='+urllib.quote(url))                  return overview[0][1]()
         else:          else:
             RESPONSE.redirect(url)                  pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self)
                   return pt()        
           
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self)
           return pt()        
           
           #urlTmp=REQUEST['URL1']
           
           #url=urlTmp+'/searchResultXML?-table=%s&'%self.imageCollectionConfig.getTable()+REQUEST['QUERY_STRING']
           
           #if xml is None:
           #    RESPONSE.redirect('xmlinput?url='+urllib.quote(url))
           #else:
           #    RESPONSE.redirect(url)
                           
     def index_html(self,fn=None,selection=None,generic='No',REQUEST=None,RESPONSE=None):      def index_html(self,fn=None,selection=None,generic='No',REQUEST=None,RESPONSE=None):
         """main template collection"""          """main template collection"""
Line 1831  class ImageCollectionMD(ImageCollection, Line 2041  class ImageCollectionMD(ImageCollection,
             self.REQUEST.SESSION['filenames']=ret              self.REQUEST.SESSION['filenames']=ret
                 #self.REQUEST.SESSION['filenamesIds']=fnIds                  #self.REQUEST.SESSION['filenamesIds']=fnIds
                       
             overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html'])              overview=self.ZopeFind(self,obj_ids=['overview_selected.html'])
                           
   
             if overview and (generic =='No'):              if overview and (generic =='No'):
Line 1851  class ImageCollectionMD(ImageCollection, Line 2061  class ImageCollectionMD(ImageCollection,
   
         self.REQUEST.SESSION['filename']=filen[0:]          self.REQUEST.SESSION['filename']=filen[0:]
                   
         if not self.REQUEST.SESSION['filename']=="":  #        if not self.REQUEST.SESSION['filename']=="":
             url=getattr(self.getImageByName(self.REQUEST.SESSION['filename']),'absolute_url')()  #            url=getattr(self.getImageByName(self.REQUEST.SESSION['filename']),'absolute_url')()
             if mode=="view":  #            if mode=="view":
                 self.REQUEST.RESPONSE.redirect(url)  #                self.REQUEST.RESPONSE.redirect(url)
             elif mode=="download":  #            elif mode=="download":
                 self.REQUEST.RESPONSE.redirect(url+"/download")  #                self.REQUEST.RESPONSE.redirect(url+"/download")
                   #                
         if self.REQUEST.has_key('showall'):          if self.REQUEST.has_key('showall'):
   
             self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')              self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')
Line 1867  class ImageCollectionMD(ImageCollection, Line 2077  class ImageCollectionMD(ImageCollection,
                           
         if selection:          if selection:
             #selection i.e. selection already stored at self.REQUEST.SESSION['filenames']              #selection i.e. selection already stored at self.REQUEST.SESSION['filenames']
             overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html'])              overview=self.ZopeFind(self,obj_ids=['overview_selected.html'])
                           
   
             if overview and (generic =='No'):#              if overview and (generic =='No'):#
                 print "selected"                
                 print repr(overview[0][1])  
                 return overview[0][1]()                  return overview[0][1]()
             else:              else:
                 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self)                  pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self)
Line 1881  class ImageCollectionMD(ImageCollection, Line 2090  class ImageCollectionMD(ImageCollection,
                           
         #no filename then show overview          #no filename then show overview
   
         overview=self.ZopeFind(self,obj_ids=['overviewMD.html'])          overview=self.ZopeFind(self,obj_ids=['overview.html'])
         if overview and (generic == 'No'):          if overview and (generic == 'No'):
   
                       
Line 1900  class ImageCollectionMD(ImageCollection, Line 2109  class ImageCollectionMD(ImageCollection,
           
         if not selected and self.REQUEST.has_key('fn'):          if not selected and self.REQUEST.has_key('fn'):
             imagename=self.REQUEST['fn'].split('/')[-1]              imagename=self.REQUEST['fn'].split('/')[-1]
               
               imagename=self.getImageByName(imagename,onlyName=True)
               
             nr=self.getObjectPosition(imagename)              nr=self.getObjectPosition(imagename)
           
             objects=self.objectIds()              objects=self.objectIds()
Line 1914  class ImageCollectionMD(ImageCollection, Line 2126  class ImageCollectionMD(ImageCollection,
           
         if not selected and self.REQUEST.has_key('fn'):          if not selected and self.REQUEST.has_key('fn'):
             imagename=self.REQUEST['fn'].split('/')[-1]              imagename=self.REQUEST['fn'].split('/')[-1]
               
               imagename=self.getImageByName(imagename,onlyName=True)
               
             nr=self.getObjectPosition(imagename)              nr=self.getObjectPosition(imagename)
           
             objects=self.objectIds()              objects=self.objectIds()
Line 1982  class ImageCollectionMD(ImageCollection, Line 2197  class ImageCollectionMD(ImageCollection,
         xmldoc=urllib.urlopen(url).read()          xmldoc=urllib.urlopen(url).read()
         #return xmldoc          #return xmldoc
         try:          try:
                 dom=xml.dom.minidom.parseString(xmldoc)                  dom=NonvalidatingReader.parseUri(url)
   
         except:          except:
                 return "ERROR: (%s %s) %s"%(sys.exc_info()[0],sys.exc_info()[1],xmldoc)                  return "ERROR: (%s %s) %s"%(sys.exc_info()[0],sys.exc_info()[1],xmldoc)
   
         images=dom.getElementsByTagName('image')  
   
           imagenames=dom.xpath("//imagename")
         rc=[]          rc=[]
         fnIds={}          fnIds={}
         for image in images:          for imagename in imagenames:
                 imagename=image.getElementsByTagName('imagename')[0]  
                               
                   #imagename=image.xpath('./imagename')[0]
                   #print "im",imagename
                                   
                                   
                                   
                 idnr=image.getElementsByTagName('idnr')[0]                  idnr=imagename.xpath('../idnr')[0]
                 id=getText(idnr.childNodes)                  id=getText(idnr.childNodes)
                 try:                  try:
                     numberOfPages=image.getElementsByTagName('numberOfPages')[0]                      numberOfPages=imagename.xpath('../numberOfPages')[0]
                 except:                  except:
                     numberOfPages=None                      numberOfPages=None
                                           
Line 2015  class ImageCollectionMD(ImageCollection, Line 2232  class ImageCollectionMD(ImageCollection,
                 texts=getText(imagename.childNodes).split("\n") #mehrere bilder in return getrennter liste                  texts=getText(imagename.childNodes).split("\n") #mehrere bilder in return getrennter liste
                 for text in texts:                  for text in texts:
                     if not text=="":                      if not text=="":
               #print "a"
                         text=self.getImageByName(text,onlyName="yes")                          text=self.getImageByName(text,onlyName="yes")
               #print "b"
                         try:                          try:
                                 rc.append((str(text),id,nop))                                  rc.append((str(text),id,nop))
                                 fnIds[str(text)]=(id,nop)                                  fnIds[str(text)]=(id,nop)
Line 2023  class ImageCollectionMD(ImageCollection, Line 2242  class ImageCollectionMD(ImageCollection,
                                 rc.append((repr(text),id,nop))                                  rc.append((repr(text),id,nop))
                                 fnIds[repr(text)]=(id,nop)                                  fnIds[repr(text)]=(id,nop)
                                   
           #print "done"
         rc.sort()          rc.sort()
         self.REQUEST.SESSION['filenames']=rc          self.REQUEST.SESSION['filenames']=rc
         self.REQUEST.SESSION['filenamesIds']=fnIds          self.REQUEST.SESSION['filenamesIds']=fnIds

Removed from v.1.77  
changed lines
  Added in v.1.92


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