--- ImageArchive/ImageArchive.py 2004/11/11 19:12:39 1.31
+++ ImageArchive/ImageArchive.py 2004/11/18 16:34:36 1.38
@@ -1,6 +1,6 @@
from OFS.Folder import Folder
from OFS.SimpleItem import SimpleItem
-from Globals import Persistent
+from Globals import Persistent,package_home
from Acquisition import Implicit
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
@@ -13,6 +13,13 @@ import operator
import tempfile
import shutil
+
+try:
+ from Products.ECHO_content.ECHO_collection import ECHO_basis
+except:
+ print "ECHO Elements not imported"
+ ECHO_basis=None
+
def splitPath(str):
str2=str.replace("\\","/")
return os.path.split(str2)[1]
@@ -58,7 +65,7 @@ class ImageDigilib(Folder,Persistent,Imp
def addMetaObjectForm(self):
"""Add Form"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/addMetaObject.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMetaObject.zpt')).__of__(self)
return pt()
@@ -85,19 +92,32 @@ class ImageDigilib(Folder,Persistent,Imp
os.chmod(filename,0644)
except:
"""hack"""
+ #scale thumb
+
+ self.scaleThumbs()
- os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
+ #scale standard
-
+ self.scaleWorkingVersions()
-
- def download(self):
+
+
+ def downloadWorkingVersion(self):
+ """download working version (2000 pixel)"""
+
+ return self.download(fmt="&dw=2000&dh=2000",suffix=".jpg")
+
+ def download(self,fmt="&mo=rawfile,hires",suffix=None):
"""download"""
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,hires"
+ path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+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
else:
filename=self.filename
+
+ if suffix:
+ filename=os.path.splitext(filename)[0]+suffix
self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%filename)
self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
@@ -105,7 +125,55 @@ class ImageDigilib(Folder,Persistent,Imp
self.REQUEST.RESPONSE.write(image)
self.REQUEST.RESPONSE.close()
#return self.REQUEST.RESPONSE.redirect(path)
-
+
+ def updateImageForm(self):
+ """form"""
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','upDateImageForm.zpt')).__of__(self)
+ return pt()
+
+ def updateImage(self,file,RESPONSE):
+ """lade neues Version des Bildes"""
+ #teste ob Dokumenten ordner schon vorhanden
+ imagePath=os.path.join(self.ImageStoragePath,self.getId())
+ path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir")
+ print "path",path
+ if not os.path.exists(path):
+ os.mkdir(path,0775)
+ os.chmod(path,0775)
+
+ versionNumber=getattr(self,'versionNumber',0)+1
+
+ #teste ob version schon existiert
+
+ while os.path.exists(os.path.join(path,"V%i_%s"%(versionNumber,self.getId()))):
+ versionNumber+=1
+
+ #kopieren der bestehenden Version in den Versions ordner.
+ imageNewPath=os.path.join(path,"V%i_%s"%(versionNumber,self.getId()))
+ os.rename(imagePath,imageNewPath)
+
+ #lesen des upload files und schreiben
+ filedata=file.read()
+ f=open(imagePath,"w")
+ f.write(filedata)
+ f.close()
+ try:
+ os.chmod(imagePath,0664)
+ except:
+ """hack"""
+ #scale thumb
+
+ self.scaleThumbs()
+
+ #scale standard
+
+ self.scaleWorkingVersions()
+
+ if RESPONSE:
+ RESPONSE.redirect(self.absolute_url())
+
+ return "done"
+
def thumb(self):
"""show thumb"""
thumbname=os.path.splitext(self.filename)[0]+".jpg"
@@ -118,27 +186,23 @@ class ImageDigilib(Folder,Persistent,Imp
#DEVEL:take nausikaa for server solution
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"
+ 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
self.REQUEST.SESSION['string']=""% path
- pt=PageTemplateFile('Products/ImageArchive/zpt/thumb.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumb.zpt')).__of__(self)
return pt()
def index_html(self):
"""show image"""
#DEVELOP: take first one for server
- path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+self.filename
-
- #path="http://localhost:8080/mpiwg/online/"+self.ImageViewerPath+"/"+self.filename
- #self.REQUEST.SESSION['string']=""% path
- #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
+ path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]
return self.REQUEST.RESPONSE.redirect(path)
def manage_AddImageDigilibForm(self):
"""Nothing yet"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageDigilibForm.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageDigilibForm.zpt')).__of__(self)
return pt()
def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
@@ -154,7 +218,7 @@ def manage_AddImageDigilib(self,id,fileu
RESPONSE.redirect('manage_main')
-class ImageCollection(Folder, Persistent, Implicit):
+class ImageCollection(Folder, Persistent, Implicit, ECHO_basis):
"""Sammelordner für Bilder"""
meta_type="ImageCollection"
@@ -165,9 +229,9 @@ class ImageCollection(Folder, Persistent
defaultMetaString="http://fm-web.mpiwg-berlin.mpg.de:8050/FMRes/FMPJS?-db=Wissenschaftlerportraits.fp5&-layID=69&-token=25&-max=1&-format=formvwcss.htm&-mode=browse&images::filename=%s&-find" ## TEST FUER IMAGEDATENBANK WP
-
-
- def createSet(self,RESPONSE=None):
+
+
+ def createSet(self,RESPONSE=None,local=None,version="working"):
"""download aller gewaehlten files"""
tempfile.tempdir="/tmp/archivesImageServer"
@@ -196,21 +260,41 @@ class ImageCollection(Folder, Persistent
return 0
for id in self.REQUEST.SESSION['filenames']:
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+urllib.quote(id[0])+"&mo=rawfile,hires"
- image=urllib.urlopen(path).read()
if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(id[0]):
filename=self.REQUEST.SESSION['filenamesIds'][id[0]][0]+"_"+id[0]
else:
filename=id[0]
-
-
- fh=file(tmpPath+"/"+filename,"w")
if RESPONSE:
RESPONSE.write(str("
Get File: %s
\n"%filename))
- fh.write(image)
+ if local:
+ if 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:
+ shutil.copyfile(sourcePath,targetPath)
+ except:
+ if RESPONSE:
+ RESPONSE.write(str("
Error in File: %s (possible missing)
\n"%filename))
+ else:
+ """nothing"""
+ else:
+ if 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()
#folgeseiten
if int(self.REQUEST.SESSION['filenamesIds'][id[0]][1])>1:
@@ -220,25 +304,33 @@ class ImageCollection(Folder, Persistent
numberOfPages=self.REQUEST.SESSION['filenamesIds'][id[0]][1]
for k in range(int(numberOfPages)-1):
i=k+1
-
- path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"&/"+ids[nr+i]+"&mo=rawfile,hires"
-
- image=urllib.urlopen(path).read()
if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(id[0]):
filename=self.REQUEST.SESSION['filenamesIds'][id[0]][0]+"_"+ids[nr+i]
else:
filename=id[0]
-
-
- fh=file(tmpPath+"/"+filename,"w")
if RESPONSE:
RESPONSE.write(str("
Get File: %s
\n"%filename))
- fh.write(image)
+ if local:
+ sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+ids[nr+1]
+ targetPath=tmpPath+"/"+filename
+ try:
+ shutil.copyfile(sourcePath,targetPath)
+ except:
+ if RESPONSE:
+ RESPONSE.write(str("
Error in File: %s (missing?)
\n"%filename))
+ else:
+ """nothing"""
+ 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.close()
+ fh=file(tmpPath+"/"+filename,"w")
+ fh.write(image)
+ fh.close()
if RESPONSE:
RESPONSE.write("
2. step: creating the downloadable file
")
@@ -288,9 +380,26 @@ class ImageCollection(Folder, Persistent
def scaleThumbs(self,RESPONSE=None):
"""scale thumbs"""
+ #scale thumbs
+ ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath)
+ if RESPONSE:
+ RESPONSE.write(ret.read())
+ RESPONSE.write("\n")
+
+ return "RESCALING STARTED"
+
+ def scaleWorkingVersions(self,RESPONSE=None):
+ """scale working versions"""
- os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath)
- return "RESCALING STARTED"
+ #scale standard
+
+ ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/small -scaleto=2000 &"% self.ImageViewerPath)
+ if RESPONSE:
+ RESPONSE.write(ret.read())
+ RESPONSE.write("\n")
+ return "rescaling started"
+
+
def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
self.id=id
@@ -299,31 +408,25 @@ class ImageCollection(Folder, Persistent
self.ImageViewerPath=ImageViewerPath
self.defaultMetaString=defaultMetaString
- manage_options = Folder.manage_options+(
+ if ECHO_basis:
+ optTMP= Folder.manage_options+ECHO_basis.manage_options
+ else:
+ optTMP= Folder.manage_options
+
+ manage_options = optTMP+(
{'label':'Main Config','action':'ImageCollection_config'},
{'label':'Import','action':'ImportFiles'},
{'label':'Recalculate Metadata','action':'recalculateMeta'},
{'label':'Import Metadata','action':'importMetaForm'},
{'label':'Rescale thumbs','action':'scaleThumbs'},
- {'label':'Weight (ECHO)','action':'weightForm'},
+ {'label':'Rescale working version','action':'scaleWorkingVersions'},
)
- def weightForm(self):
- """Weight"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/changeWeight.zpt').__of__(self)
- return pt()
-
- def changeWeight(self,weight,RESPONSE=None):
- """Change weight"""
- self.weight=weight
-
- if RESPONSE is not None:
- RESPONSE.redirect('manage_main')
-
+
def importMetaForm(self):
"""import metadata"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','importMeta.zpt')).__of__(self)
return pt()
def importMeta(self,fileupload,tag):
@@ -449,16 +552,24 @@ class ImageCollection(Folder, Persistent
idnr=image.getElementsByTagName('idnr')[0]
id=getText(idnr.childNodes)
numberOfPages=image.getElementsByTagName('numberOfPages')[0]
- nop=getText(numberOfPages.childNodes)
-
+ nopT=getText(numberOfPages.childNodes)
+ try:
+ nop=int(nopT)
+ except:
+ nop=0
if not text=="":
- rc.append((str(text),id,nop))
- fnIds[str(text)]=(id,nop)
+ try:
+ rc.append((str(text),id,nop))
+ fnIds[str(text)]=(id,nop)
+ except:
+ rc.append((repr(text),id,nop))
+ fnIds[repr(text)]=(id,nop)
+
rc.sort()
self.REQUEST.SESSION['filenames']=rc
self.REQUEST.SESSION['filenamesIds']=fnIds
- pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected.zpt')).__of__(self)
return pt()
def recalculateMeta(self):
@@ -474,7 +585,7 @@ class ImageCollection(Folder, Persistent
def addImage(self):
"""Add an Image"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/addImage.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImage.zpt')).__of__(self)
return pt()
def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
@@ -512,9 +623,17 @@ class ImageCollection(Folder, Persistent
#print newObj
self._setObject(file,newObj)
#print ret
- #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
+ #pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self)
#print self.ImageStoragePath
- os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath)
+
+ #scale thumb
+
+ self.scaleThumbs()
+
+ #scale standard
+
+ self.scaleWorkingVersions()
+
RESPONSE.redirect('manage_main')
@@ -538,17 +657,26 @@ class ImageCollection(Folder, Persistent
except:
"""nothing yet"""
#print ret
- #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
+ #pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self)
#print self.ImageStoragePath
- os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
- RESPONSE.redirect('manage_main')
+
+ #scale thumb
+
+ self.scaleThumbs()
+
+ #scale standard
+
+ self.scaleWorkingVersions()
+
+ if RESPONSE:
+ RESPONSE.redirect('manage_main')
def ImageCollection_config(self):
"""Nothing yet"""
if not hasattr(self,'defaultMetaString'):
self.defaultMetaString=""
- pt=PageTemplateFile('Products/ImageArchive/zpt/ChangeImageCollectionForm.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeImageCollectionForm.zpt')).__of__(self)
return pt()
def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
@@ -711,13 +839,13 @@ class ImageCollection(Folder, Persistent
def setColTimesRowForm(self):
"""form for matrix setting"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','selectColTimesRow.zpt')).__of__(self)
return pt()
def setDone(self):
"""done"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changedColTimesRow.zpt')).__of__(self)
return pt()
def setColTimesRow(self,cols,rows):
@@ -819,40 +947,41 @@ class ImageCollection(Folder, Persistent
def thumblistSelected_old(self):
"""main template collection"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbselected.zpt')).__of__(self)
return pt()
def thumblistSelected(self):
"""main template collection"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbselected2.zpt')).__of__(self)
return pt()
def thumblist_old(self):
"""main template collection"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbs.zpt')).__of__(self)
return pt()
def thumblist(self):
"""main template collection"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumb2.zpt')).__of__(self)
return pt()
def thumblistNewWindow(self):
"""Thumbs mit clik neues Fenster oeffnen"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/thumbNewWindow.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbNewWindow.zpt')).__of__(self)
return pt()
def navig_selected_html(self):
"""navigation"""
#self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
- pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','navigation_selected.zpt')).__of__(self)
return pt()
def navig_html(self):
"""navigation"""
#self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
- pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
+
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','navigation.zpt')).__of__(self)
return pt()
@@ -863,7 +992,7 @@ class ImageCollection(Folder, Persistent
else:
filen=""
self.REQUEST.SESSION['filename']=filen
- pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected2.zpt')).__of__(self)
return pt()
def index_html(self):
@@ -873,21 +1002,21 @@ class ImageCollection(Folder, Persistent
else:
filen=""
- self.REQUEST.SESSION['filename']=filen
-
+ self.REQUEST.SESSION['filename']=filen[0:]
+
if self.REQUEST.has_key('showall'):
self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')
else:
self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
-
- pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)
+
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview.zpt')).__of__(self)
return pt()
def manage_AddImageCollectionForm(self):
"""Nothing yet"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageCollectionForm.zpt')).__of__(self)
return pt()
def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
@@ -927,7 +1056,7 @@ class ImageCollectionIFrame(ImageCollect
self.REQUEST.SESSION['filename']=filen
- pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','IFrameMain.zpt')).__of__(self)
return pt()
def iframe_html(self):
@@ -937,13 +1066,13 @@ class ImageCollectionIFrame(ImageCollect
else:
filen=""
self.REQUEST.response.setCookie('filename',filen)
- pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','IFrameOverview.zpt')).__of__(self)
return pt()
def manage_AddImageCollectionIFrameForm(self):
"""Nothing yet"""
- pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)
+ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageCollectionIFrameForm.zpt')).__of__(self)
return pt()
def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):