--- ImageArchive/ImageArchive.py 2005/04/29 09:45:57 1.55 +++ ImageArchive/ImageArchive.py 2005/06/05 10:10:44 1.60 @@ -16,7 +16,12 @@ from types import * import time from threading import Thread import Queue - +try: + from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder +except: + print "ZSQL Extend Folder nicht importiert" + print "Metadatendfolder funktioniert nicht!!!" + try: from Products.ECHO_content.ECHO_collection import ECHO_basis except: @@ -55,7 +60,7 @@ 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 @@ -65,7 +70,7 @@ class generateSet: self.url=url self.version=version self.done=None - + def __call__(self): """call generate Set""" @@ -74,7 +79,7 @@ class generateSet: 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): @@ -98,7 +103,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]
@@ -109,9 +116,9 @@ class generateSet:
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"
+ path=self.scalerPath+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"
+ path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires"
image=urllib.urlopen(path).read()
@@ -128,7 +135,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
@@ -144,15 +151,16 @@ 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)
else:
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires"
+ path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires"
image=urllib.urlopen(path).read()
@@ -162,10 +170,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
@@ -329,7 +337,7 @@ class ImageDigilib(Folder,Persistent,Imp
def download(self,fmt="&mo=rawfile,hires",suffix=None):
"""download"""
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+fmt
+ path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+fmt
if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(self.filename):
filename=self.REQUEST.SESSION['filenamesIds'][self.filename][0]+"_"+self.filename
@@ -460,24 +468,38 @@ class ImageDigilib(Folder,Persistent,Imp
def thumb(self,url=None):
"""show thumb"""
thumbname=os.path.splitext(self.filename)[0]+".jpg"
- ## if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname):
-## image=urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:18080/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=150&mo=lores").read()
-## f=open("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname,"w")
-## f.write(image)
-## f.close()
-## os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 150 &"% self.ImageViewerPath)
-
- #DEVEL:take nausikaa for server solution
-
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores"
- #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
+
+ path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores"
+
self.REQUEST.SESSION['string']=""% path
if url:
return ""% path
else:
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumb.zpt')).__of__(self)
return pt()
+
+
+ def thumbMD(self,url=None):
+ """show thumb mit Metadaten erwarten image in ImageCollectionMD
+ """
+ thumbname=os.path.splitext(self.filename)[0]+".jpg"
+ path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores"
+
+ self.REQUEST.SESSION['string']=""% path
+ if url:
+ return ""% path
+ else:
+
+ overview=self.ZopeFind(self.aq_parent,obj_ids=['thumb.html'])
+ if overview:
+ return getattr(self,overview[0][0])()
+ else:
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbMD.zpt')).__of__(self)
+ return pt()
+
+
+
def index_html(self):
"""show image"""
#DEVELOP: take first one for server
@@ -511,7 +533,9 @@ class ImageCollection(Folder, Persistent
"""Sammelordner für Bilder"""
meta_type="ImageCollection"
-
+ scalerPath="http://127.0.0.1:18080/digitallibrary/servlet/Scaler/?fn="
+ #scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="
+
zipThreads={}
zipThreads2={}
@@ -599,7 +623,7 @@ class ImageCollection(Folder, Persistent
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)
@@ -883,14 +907,14 @@ class ImageCollection(Folder, Persistent
RESPONSE.redirect('manage_main')
- def importStructure(self,path):
- """import"""
- splitted=os.path.split(path)
- if os.path.isDir(path) and (len(splitted[1])>0) and (splitted[1][0]=="."):
- manage_AddImageCollection(self,splitted[1],splitted[1],path,self.ImageViewerPath,self.defaultMetaString,RESPONSE=None)
+ ## def importStructure(self,path):
+## """import"""
+## splitted=os.path.split(path)
+## if os.path.isDir(path) and (len(splitted[1])>0) and (splitted[1][0]=="."):
+## manage_AddImageCollection(self,splitted[1],splitted[1],path,self.ImageViewerPath,self.defaultMetaString,RESPONSE=None)
- obj=getattr(self,splitted[1])
- obj.ImportFiles()
+## obj=getattr(self,splitted[1])
+## obj.ImportFiles()
def ImportStructure(self,RESPONSE=None):
"""Import the existing files of a folder"""
@@ -1380,8 +1404,26 @@ class ImageCollection(Folder, Persistent
return filename
else:
return fn
- def index_html(self):
+ def index_html(self,fn=None):
"""main template collection"""
+
+ 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:
@@ -1395,9 +1437,13 @@ class ImageCollection(Folder, Persistent
else:
self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
-
- pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview.zpt')).__of__(self)
- return pt()
+
+ overview=self.ZopeFind(self,obj_ids=['overview.html'])
+ if overview:
+ return overview[0][1]()
+ else:
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview.zpt')).__of__(self)
+ return pt()
def manage_AddImageCollectionForm(self):
"""Nothing yet"""
@@ -1413,6 +1459,49 @@ def manage_AddImageCollection(self,id,ti
RESPONSE.redirect('manage_main')
+
+class ImageCollectionMD(ImageCollection,ZSQLExtendFolder):
+ """Imageviewer and Metadata"""
+ meta_type="ImageCollection MD"
+ scalerPath="http://127.0.0.1:18080/digitallibrary/servlet/Scaler/?fn="
+ #scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="
+ manage_options=ImageCollection.manage_options+(
+ {'label':'ZSQLExtend','action':'changeZSQLExtendForm'},
+ )
+
+ changeZSQLExtendForm=ZSQLExtendFolder.changeZSQLExtendForm
+
+ def setGenericSearchStringForm(self):
+ """form setze generischen search string fuer MD"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','setGenericSearchStringForm.zpt')).__of__(self)
+ return pt()
+
+ def setGenericSearchString(self,searchString):
+ """setze generischen search string"""
+ self.searchString=searchString
+
+ def thumblistMD(self):
+ """main template collection"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbListMD.zpt')).__of__(self)
+ return pt()
+
+
+def manage_AddImageCollectionMDForm(self):
+ """Nothing yet"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageCollectionFormMD.zpt')).__of__(self)
+ return pt()
+
+def manage_AddImageCollectionMD(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
+ """Add ImageCollection"""
+ newObj=ImageCollectionMD(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
+ self._setObject(id,newObj)
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+
+
+
class ImageCollectionIFrame(ImageCollection):
"""Class fuer Collection set als IFrame"""