--- ImageArchive/ImageArchive.py 2005/04/28 22:12:21 1.54 +++ ImageArchive/ImageArchive.py 2005/04/29 18:24:04 1.57 @@ -27,6 +27,8 @@ except: manage_options=() +tdir = "/mpiwg/temp/tmp/archivesImageServer/" +#tdir="/tmp/archivesImageServer/" def splitPath(str): str2=str.replace("\\","/") @@ -52,7 +54,8 @@ def getTextFromNode(nodename): class generateSet: """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""" self.filenames=filenames self.filenamesIds=filenamesIds @@ -63,14 +66,15 @@ class generateSet: self.version=version self.done=None + def __call__(self): """call generate Set""" storeTempDir=tempfile.tempdir - tempfile.tempdir="/mpiwg/temp/tmp/archivesImageServer" + tempfile.tempdir=tdir tmpPath=tempfile.mktemp() - tmpZip=tempfile.mktemp()+".zip" + tmpZip=tempfile.mktemp()+".gtz" tmpFn=os.path.split(tmpZip)[1] if not os.path.exists(tempfile.tempdir): @@ -94,7 +98,9 @@ class generateSet: self.response+=str("

Get File: %s
\n"%filename) if self.local: + if self.version=="working": + sourcePath="/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+os.path.splitext(id[0])[0]+".jpg" else: sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+id[0] @@ -124,7 +130,7 @@ class generateSet: try: nr=self.ids.index(id[0]) except: - self.reponse+=str("

Error in File: %s (possible missing)
\n"%id[0]) + self.response+=str("

Error in File: %s (possible missing)
\n"%id[0]) nr=0 @@ -140,10 +146,11 @@ class generateSet: self.response+=str("

Get File: %s
\n"%filename) if self.local: - sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+self.ids[nr+1] + sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+self.ids[nr+i] targetPath=tmpPath+"/"+filename try: shutil.copyfile(sourcePath,targetPath) + except: self.response+=str("

Error in File: %s (missing?)
\n"%filename) @@ -158,10 +165,10 @@ class generateSet: fh.close() self.response+="

2. step: creating the downloadable file

" - self.response+="

Create Zip
" + self.response+="

Create gtar
" self.response+="

This can take a while....
\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+="
" for c in fh.read(): self.response+=c @@ -509,6 +516,8 @@ class ImageCollection(Folder, Persistent zipThreads={} + zipThreads2={} + genericMetaDataType="leiden_meta" leiden_meta_fields=['image_id','date','country','place','people','description','photographer'] @@ -536,6 +545,7 @@ class ImageCollection(Folder, Persistent self.zipThreads[thread.getName()[0:]]=threadStart + self.zipThreads2[thread.getName()[0:]]=thread self.REQUEST.SESSION['threadName']=thread.getName()[0:] wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['zip_wait_template']) if wait_template: @@ -557,6 +567,9 @@ class ImageCollection(Folder, Persistent else: if self.zipThreads[threadName].isDone(): 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) return pt() @@ -569,14 +582,27 @@ class ImageCollection(Folder, Persistent + + def checkThreads(self): + """teste running threads""" + ret=""" + +

Threads of %s

"""%(self.absolute_url(),self.getId()) + + for threadName in self.zipThreads.keys(): + if self.zipThreads2[threadName].isAlive(): + ret+="

%s --> alive

"%threadName + else: + ret+="

%s --> dead

"%threadName + return ret+"" - def downloadSet(self,fn): """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") len=os.stat(filename)[6] self.REQUEST.RESPONSE.setHeader("Content-Length",len)