Diff for /ImageArchive/ImageArchive.py between versions 1.54 and 1.59

version 1.54, 2005/04/28 22:12:21 version 1.59, 2005/05/03 16:31:36
Line 27  except: Line 27  except:
         manage_options=()          manage_options=()
   
   
   tdir = "/mpiwg/temp/tmp/archivesImageServer/"
   #tdir="/tmp/archivesImageServer/"
   
 def splitPath(str):  def splitPath(str):
     str2=str.replace("\\","/")      str2=str.replace("\\","/")
Line 52  def getTextFromNode(nodename): Line 54  def getTextFromNode(nodename):
 class generateSet:  class generateSet:
     """generateSetThread"""      """generateSetThread"""
   
     def __init__(self,filenames,filenamesIds,ImageViewerPath,ids,url,local=None,version="full"):          
       def __init__(self,filenames,filenamesIds,ImageViewerPath,ids,url,local=None,version="working"):
         """init generateSet"""          """init generateSet"""
         self.filenames=filenames          self.filenames=filenames
         self.filenamesIds=filenamesIds          self.filenamesIds=filenamesIds
Line 63  class generateSet: Line 66  class generateSet:
         self.version=version          self.version=version
         self.done=None          self.done=None
   
   
     def __call__(self):      def __call__(self):
         """call generate Set"""          """call generate Set"""
   
         storeTempDir=tempfile.tempdir          storeTempDir=tempfile.tempdir
     tempfile.tempdir="/mpiwg/temp/tmp/archivesImageServer"        tempfile.tempdir=tdir
   
         tmpPath=tempfile.mktemp()          tmpPath=tempfile.mktemp()
         tmpZip=tempfile.mktemp()+".zip"          tmpZip=tempfile.mktemp()+".gtz"
         tmpFn=os.path.split(tmpZip)[1]          tmpFn=os.path.split(tmpZip)[1]
   
         if not os.path.exists(tempfile.tempdir):          if not os.path.exists(tempfile.tempdir):
Line 94  class generateSet: Line 98  class generateSet:
                     self.response+=str("<p>Get File: %s<br>\n"%filename)                      self.response+=str("<p>Get File: %s<br>\n"%filename)
   
             if self.local:              if self.local:
                   
                 if self.version=="working":                  if self.version=="working":
   
                     sourcePath="/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+os.path.splitext(id[0])[0]+".jpg"                      sourcePath="/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+os.path.splitext(id[0])[0]+".jpg"
                 else:                  else:
                     sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+id[0]                      sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+id[0]
Line 124  class generateSet: Line 130  class generateSet:
                     try:                      try:
                                 nr=self.ids.index(id[0])                                  nr=self.ids.index(id[0])
                 except:                  except:
                                 self.reponse+=str("<p>Error in File: %s (possible missing)<br>\n"%id[0])                                  self.response+=str("<p>Error in File: %s (possible missing)<br>\n"%id[0])
                                   
   
                                 nr=0                                  nr=0
Line 140  class generateSet: Line 146  class generateSet:
                                     self.response+=str("<p>Get File: %s<br>\n"%filename)                                      self.response+=str("<p>Get File: %s<br>\n"%filename)
   
                     if self.local:                      if self.local:
                         sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+self.ids[nr+1]                          sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+self.ids[nr+i]
                         targetPath=tmpPath+"/"+filename                          targetPath=tmpPath+"/"+filename
                         try:                          try:
                             shutil.copyfile(sourcePath,targetPath)                              shutil.copyfile(sourcePath,targetPath)
                       
                         except:                          except:
                                                 self.response+=str("<p>Error in File: %s (missing?)<br>\n"%filename)                                                  self.response+=str("<p>Error in File: %s (missing?)<br>\n"%filename)
                                                       
Line 158  class generateSet: Line 165  class generateSet:
                         fh.close()                          fh.close()
   
         self.response+="<h3>2. step: creating the downloadable file</h3>"          self.response+="<h3>2. step: creating the downloadable file</h3>"
     self.response+="<p>Create Zip<br>"      self.response+="<p>Create gtar<br>"
         self.response+="<p>This can take a while....<br>\n"          self.response+="<p>This can take a while....<br>\n"
   
         fh=os.popen2("zip -u %s %s/*"%(tmpZip,tmpPath),1)[1]          fh=os.popen2("gnutar zcvf %s %s/*"%(tmpZip,tmpPath),1)[1]
         self.response+="<br>"          self.response+="<br>"
         for c in fh.read():          for c in fh.read():
             self.response+=c              self.response+=c
Line 509  class ImageCollection(Folder, Persistent Line 516  class ImageCollection(Folder, Persistent
   
         
     zipThreads={}      zipThreads={}
       zipThreads2={}
       
     genericMetaDataType="leiden_meta"      genericMetaDataType="leiden_meta"
   
     leiden_meta_fields=['image_id','date','country','place','people','description','photographer']      leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
Line 536  class ImageCollection(Folder, Persistent Line 545  class ImageCollection(Folder, Persistent
   
                                           
                 self.zipThreads[thread.getName()[0:]]=threadStart                  self.zipThreads[thread.getName()[0:]]=threadStart
                   self.zipThreads2[thread.getName()[0:]]=thread
                 self.REQUEST.SESSION['threadName']=thread.getName()[0:]                  self.REQUEST.SESSION['threadName']=thread.getName()[0:]
                 wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['zip_wait_template'])                  wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['zip_wait_template'])
                 if wait_template:                  if wait_template:
Line 557  class ImageCollection(Folder, Persistent Line 567  class ImageCollection(Folder, Persistent
                 else:                  else:
                     if self.zipThreads[threadName].isDone():                      if self.zipThreads[threadName].isDone():
                         self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()                          self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()
                           self.zipThreads2[threadName].join()
                           del(self.zipThreads2[threadName])
                           del(self.zipThreads[threadName])
                         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_result.zpt')).__of__(self)                          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_result.zpt')).__of__(self)
                         return pt()                          return pt()
                                                   
Line 570  class ImageCollection(Folder, Persistent Line 583  class ImageCollection(Folder, Persistent
   
   
           
       def checkThreads(self):
           """teste running threads"""
           ret="""<html>
           <head>
           <meta http-equiv="REFRESH" content="5;url=%s/checkThreads"
           <body><h2>Threads of %s</h2>"""%(self.absolute_url(),self.getId())
           
           for threadName in self.zipThreads.keys():
               if self.zipThreads2[threadName].isAlive():
                   ret+="<p>%s --> alive</p>"%threadName
               else:
                   ret+="<p>%s --> dead</p>"%threadName
           return ret+"</body></html>"
                         
     def downloadSet(self,fn):      def downloadSet(self,fn):
         """download prepared set"""          """download prepared set"""
         filename="/mpiwg/temp/tmp/archivesImageServer/"+fn          filename=os.path.join(tdir,fn)
   
                   
         self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%"image.zip")          self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%"image.tgz")
         self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")          self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
         len=os.stat(filename)[6]          len=os.stat(filename)[6]
         self.REQUEST.RESPONSE.setHeader("Content-Length",len)          self.REQUEST.RESPONSE.setHeader("Content-Length",len)
Line 1357  class ImageCollection(Folder, Persistent Line 1383  class ImageCollection(Folder, Persistent
             return filename              return filename
         else:          else:
             return fn              return fn
     def index_html(self):      def index_html(self,fn=None):
         """main template collection"""          """main template collection"""
           print
           if fn:
               ret=[]
   
               if type(fn) is ListType:
                   """experimentell mehr als ein filename"""
                   for filename in fn:
                       if not (filename == ""):
                           ret.append((filename,'',1))
               else:
                   ret.append((fn,'',1))
   
               self.REQUEST.SESSION['filenames']=ret
                   #self.REQUEST.SESSION['filenamesIds']=fnIds
   
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected.zpt')).__of__(self)
               return pt()        
   
         if self.REQUEST.has_key('filename'):          if self.REQUEST.has_key('filename'):
             filen=self.REQUEST['filename']              filen=self.REQUEST['filename']
         else:          else:

Removed from v.1.54  
changed lines
  Added in v.1.59


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