--- ImageArchive/ImageArchive.py 2005/04/28 22:12:21 1.54 +++ ImageArchive/ImageArchive.py 2006/05/25 15:49:42 1.94 @@ -1,9 +1,15 @@ +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.OrderedFolder import OrderedFolder from OFS.SimpleItem import SimpleItem from Globals import Persistent,package_home from Acquisition import Implicit from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate +from xmlrpclib import ServerProxy import re import os import os.path @@ -16,6 +22,23 @@ from types import * import time from threading import Thread import Queue +import cgi +import sys +import zLOG +import shutil + +from AccessControl import ClassSecurityInfo, getSecurityManager + +try: + from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder +except: + print "ZSQL Extend Folder nicht importiert" + print "Metadatendfolder funktioniert nicht!!!" + class ZSQLExtendFolder: + """leer""" + manage_options=() + + try: from Products.ECHO_content.ECHO_collection import ECHO_basis @@ -26,18 +49,22 @@ except: manage_options=() +tdir="tmp" +#tdir = "/mpiwg/temp/tmp/archivesImageServer/" +#tdir="/tmp/archivesImageServer/" +imageExtensions=['jpg','jpeg','tif','tiff','png'] def splitPath(str): - str2=str.replace("\\","/") - return os.path.split(str2)[1] + str2=str.replace("\\","/") + return os.path.split(str2)[1] def getText(nodelist): rc = "" for node in nodelist: - if node.nodeType == node.TEXT_NODE: + if node.nodeType == node.TEXT_NODE: rc = rc + node.data return rc @@ -45,130 +72,155 @@ def getTextFromNode(nodename): nodelist=nodename.childNodes rc = "" for node in nodelist: - if node.nodeType == node.TEXT_NODE: + if node.nodeType == node.TEXT_NODE: rc = rc + node.data return rc class generateSet: """generateSetThread""" - def __init__(self,filenames,filenamesIds,ImageViewerPath,ids,url,local=None,version="full"): + + def __init__(self,filenames,filenamesIds,ImageViewerPath,ImageStoragePath,destBasis,ids,url,local=None,version="working"): """init generateSet""" self.filenames=filenames self.filenamesIds=filenamesIds self.ImageViewerPath=ImageViewerPath + self.ImageStoragePath=ImageStoragePath + self.destBasis=destBasis self.ids=ids self.local=local self.url=url self.version=version self.done=None + self.response="" + 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): os.mkdir(tempfile.tempdir) if not os.path.exists(tmpPath): - os.mkdir(tmpPath) - - self.response="" + os.mkdir(tmpPath) + + self.response="" self.response="
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]
- targetPath=tmpPath+"/"+filename
- try:
+ toggle=False
+
+ if self.local:
+
+ if self.version=="working":
+
+ sourcePath=self.destBasis+"/"+self.ImageViewerPath+"/"+os.path.splitext(id[0])[0]+".jpg"
+ if not os.path.exists(sourcePath):
+ self.response+=str("
%s doesn't exist I'll try the non scaled image
"%sourcePath) + toggle=True + if (self.version!="working") or toggle: + toggle=False + sourcePath=self.ImageStoragePath+"/"+id[0] + if not os.path.exists(sourcePath): + sourcePath=self.ImageStoragePath+"/"+os.path.splitext(id[0])[0]+".jpg" + + targetPath=tmpPath+"/"+filename + try: shutil.copyfile(sourcePath,targetPath) - except: - self.response+=(str("Error in File: %s (possible missing)
\n"%filename))
- else:
- if self.version=="working":
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&dh=2000&dw=2000"
- else:
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires"
- image=urllib.urlopen(path).read()
-
-
- fh=file(tmpPath+"/"+filename,"w")
-
-
- fh.write(image)
- fh.close()
+ except:
+ self.response+=(str("
Error in File: %s (possible missing)
\n"%sourcePath))
+ else:
+ if self.version=="working":
+ requestString=self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&dh=2000&dw=2000"
+ path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString
+
+ else:
+ requestString=self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires"
+ path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString
+
+
+ image=urllib.urlopen(path).read()
+
+
+ fh=file(tmpPath+"/"+filename,"w")
+
+
+ fh.write(image)
+ fh.close()
#folgeseiten
- if int(self.filenamesIds[id[0]][1])>1:
- #ids=self.show_thumbs()
+
+ if int(self.filenamesIds[id[0]][1])>1:
+ #ids=self.show_thumbs()
- try:
+ try:
nr=self.ids.index(id[0])
- except:
- self.reponse+=str("
Error in File: %s (possible missing)
\n"%id[0])
+ except:
+ self.response+=str("
Error in File: %s (possible missing)
\n"%id[0])
nr=0
- numberOfPages=self.filenamesIds[id[0]][1]
- for k in range(int(numberOfPages)-1):
- i=k+1
- if self.filenamesIds.has_key(id[0]):
- filename=self.filenamesIds[id[0]][0]+"_"+self.ids[nr+i]
- else:
- filename=id[0]
+ numberOfPages=self.filenamesIds[id[0]][1]
+ for k in range(int(numberOfPages)-1):
+ i=k+1
+ if self.filenamesIds.has_key(id[0]):
+ filename=self.filenamesIds[id[0]][0]+"_"+self.ids[nr+i]
+ else:
+ filename=id[0]
self.response+=str("
Get File: %s
\n"%filename)
- if self.local:
- sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+self.ids[nr+1]
- targetPath=tmpPath+"/"+filename
- try:
- shutil.copyfile(sourcePath,targetPath)
- except:
+ if self.local:
+ 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)
-
- else:
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires"
-
- image=urllib.urlopen(path).read()
-
-
- fh=file(tmpPath+"/"+filename,"w")
- fh.write(image)
- fh.close()
+
+ else:
+
+ requestString=self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires"
+ path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString
+
+ image=urllib.urlopen(path).read()
+
+
+ fh=file(tmpPath+"/"+filename,"w")
+ fh.write(image)
+ 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
if c==")":
self.response+="
\n"
-
-
+
+
shutil.rmtree(tmpPath)
@@ -179,7 +231,7 @@ class generateSet:
downloadUrl=self.url+"/downloadSet"
self.response+="""
The file will be stored for a while, you can download it later, the URL is:
-%s?fn=%s\n"""%(tmpFn,downloadUrl,tmpFn) +
%s?fn=%s\n"""%(tmpFn,downloadUrl,tmpFn) self.done=True def getResult(self): @@ -230,11 +282,13 @@ class metaData(SimpleItem): ret+="
%s=%s
"%(tag,getattr(self,tag)) return ret+"