--- ImageArchive/ImageArchive.py 2005/04/28 22:03:44 1.53 +++ ImageArchive/ImageArchive.py 2005/05/03 16:31:36 1.59 @@ -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,13 +66,15 @@ class generateSet: self.version=version self.done=None + def __call__(self): """call generate Set""" storeTempDir=tempfile.tempdir - tempfile.tempdir="/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): @@ -93,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] @@ -123,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 @@ -139,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) @@ -157,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 @@ -508,6 +516,8 @@ class ImageCollection(Folder, Persistent zipThreads={} + zipThreads2={} + genericMetaDataType="leiden_meta" leiden_meta_fields=['image_id','date','country','place','people','description','photographer'] @@ -535,11 +545,12 @@ 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: return wait_template[0][1]() - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_Wait.zpt')).__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self) return pt() #xmltrans.run() else: @@ -551,30 +562,47 @@ class ImageCollection(Folder, Persistent if wait_template: return wait_template[0][1]() - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_Wait.zpt')).__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self) return pt() 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() else: self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult() self.REQUEST.SESSION['threadName']=threadName - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_Wait_result.zpt')).__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait_result.zpt')).__of__(self) return pt() + + 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="/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) @@ -1355,8 +1383,26 @@ class ImageCollection(Folder, Persistent return filename else: return fn - def index_html(self): + def index_html(self,fn=None): """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'): filen=self.REQUEST['filename'] else: