--- ImageArchive/ImageArchive.py 2005/04/28 22:12:21 1.54 +++ 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,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+="
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="""
+
%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) @@ -1357,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: