Diff for /ImageArchive/ImageArchive.py between versions 1.78 and 1.88

version 1.78, 2006/05/15 13:14:16 version 1.88, 2006/05/17 21:42:49
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 390  class ImageDigilib(Folder,Persistent,Imp Line 390  class ImageDigilib(Folder,Persistent,Imp
             """hack"""              """hack"""
         #scale thumb          #scale thumb
                   
         self.scaleThumbs()          #self.scaleThumbs()
   
         #scale standard          #scale standard
   
         self.scaleWorkingVersions()          #self.scaleWorkingVersions()
   
                   
                   
Line 480  class ImageDigilib(Folder,Persistent,Imp Line 480  class ImageDigilib(Folder,Persistent,Imp
                           
             #scale thumb              #scale thumb
                   
             self.scaleThumbs()              #self.scaleThumbs()
                           
             #scale standard              #scale standard
   
             self.scaleWorkingVersions()              #self.scaleWorkingVersions()
   
   
             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 updateImage(self,file,rename=None,RESPONSE=None):      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 525  class ImageDigilib(Folder,Persistent,Imp Line 529  class ImageDigilib(Folder,Persistent,Imp
             try:              try:
                     os.chmod(imagePath,0664)                      os.chmod(imagePath,0664)
             except:              except:
                     """hack"""                  pass
             #scale thumb              #scale thumb
                   
             self.scaleThumbs()              #self.scaleThumbs()
                           
             #scale standard              #scale standard
   
             self.scaleWorkingVersions()              #self.scaleWorkingVersions()
   
             if rename:              if _rename:
                 self.renameImage(file.filename)                  self.renameImage(file.filename)
                   
                   
           args=self.REQUEST.form
          
           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 1065  class ImageCollection(OrderedFolder, Per Line 1075  class ImageCollection(OrderedFolder, Per
   
         #scale thumb          #scale thumb
                   
         self.scaleThumbs()          #self.scaleThumbs()
   
         #scale standard          #scale standard
   
         self.scaleWorkingVersions()          #self.scaleWorkingVersions()
                   
   
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
Line 1153  class ImageCollection(OrderedFolder, Per Line 1163  class ImageCollection(OrderedFolder, Per
   
                 #scale thumb                  #scale thumb
                   
         self.scaleThumbs()          #self.scaleThumbs()
   
         #scale standard          #scale standard
   
Line 1621  class ImageCollection(OrderedFolder, Per Line 1631  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 onlyName:
                           return found[0]
                       else:
                           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 filenameM.lower()==foundM.lower():
                     if onlyName:                      if onlyName:
                         return found[0]                          return found[0]
                     else:                      else:
                         return found[1]                          return found[1]
                   
         if onlyName:          if onlyName:
             return filename              return filename
         else:          else:
Line 1731  class ImageCollectionMD(ImageCollection, Line 1755  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]==".":
                   if self.__dict__.has_key(file):
   
                       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()
           
           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 1822  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)
                   
         if RESPONSE:          if RESPONSE:
             return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn)              return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn)
Line 1802  class ImageCollectionMD(ImageCollection, Line 1870  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)
                   
         if xml is None:          rc.sort()
             RESPONSE.redirect('xmlinput?url='+urllib.quote(url))          self.REQUEST.SESSION['filenames']=rc
           self.REQUEST.SESSION['filenamesIds']=fnIds
           
           overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html'])
               
           if overview:
                   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 1922  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 1942  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 1958  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 1971  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 1990  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 2007  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 2078  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')  
   
           images=dom.xpath("//image")
         rc=[]          rc=[]
         fnIds={}          fnIds={}
         for image in images:          for image in images:
                 imagename=image.getElementsByTagName('imagename')[0]  
                               
                   imagename=image.xpath('./imagename')[0]
                                   
                                   
                                   
                 idnr=image.getElementsByTagName('idnr')[0]                  
                   idnr=image.xpath('./idnr')[0]
                 id=getText(idnr.childNodes)                  id=getText(idnr.childNodes)
                 try:                  try:
                     numberOfPages=image.getElementsByTagName('numberOfPages')[0]                      numberOfPages=image.xpath('./numberOfPages')[0]
                 except:                  except:
                     numberOfPages=None                      numberOfPages=None
                                           

Removed from v.1.78  
changed lines
  Added in v.1.88


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