from OFS.Folder import Folder
from OFS.SimpleItem import SimpleItem
from Globals import Persistent
from Acquisition import Implicit
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
import re
import os
import os.path
import urllib
import xml.dom.minidom
def getText(nodelist):
rc = ""
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
return rc
class ImageDigilib(SimpleItem,Persistent,Implicit):
"""Anzeige object fuer digilib"""
meta_type="ImageDigilib"
def __init__(self,id,filename):
self.id=id
self.title=filename
self.filename=filename
def uploadImage(self,fileupload,path_name):
"""upload an Image from an Requast"""
#path_name=self.ImageStoragePath
filename=path_name+"/"+fileupload.filename
filedata=fileupload.read()
f=open(filename,"w")
f.write(filedata)
f.close()
os.chmod(filename,0644)
def download(self):
"""download"""
path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=file"
#self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
#pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
return self.REQUEST.RESPONSE.redirect(path)
def thumb(self):
"""show thumb"""
if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+self.filename):
#image=urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=150").read()
#f=open("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+self.filename,"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)
#path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100"
path="/thumbs"+self.ImageViewerPath+"/"+self.filename
self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
return pt()
def index_html(self):
"""show image"""
path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename
#self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
#pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
return self.REQUEST.RESPONSE.redirect(path)
def manage_AddImageDigilibForm(self):
"""Nothing yet"""
pt=PageTemplateFile('Products/ImageArchive/AddImageDigilibForm.zpt').__of__(self)
return pt()
def manage_AddImageDigilib(self,id,fileupload,RESPONSE=None):
"""Add ImageCollection"""
#fileupload=self.REQUEST['fileupload']
newObj=ImageDigilib(id,fileupload.filename)
self._setObject(id,newObj)
getattr(self,id).uploadImage(fileupload,self.ImageStoragePath)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
class ImageCollection(Folder, Persistent, Implicit):
"""Sammelordner für Bilder"""
meta_type="ImageCollection"
def __init__(self,id,title,ImageStoragePath,ImageViewerPath):
self.id=id
self.title=title
self.ImageStoragePath=ImageStoragePath
self.ImageViewerPath=ImageViewerPath
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'ImageCollection_config'},
{'label':'Import','action':'ImportFiles'},
)
def xmlinput(self,url):
"""Anzeige von ausgewaehlten thumbs"""
#return url
xmldoc=urllib.urlopen(url).read()
dom=xml.dom.minidom.parseString(xmldoc)
images=dom.getElementsByTagName('imagename')
rc=[]
for image in images:
text=getText(image.childNodes)
if not text=="":
rc.append(str(text))
self.REQUEST.SESSION['filenames']=rc
pt=PageTemplateFile('Products/ImageArchive/overview_selected.zpt').__of__(self)
return pt()
def addImage(self):
"""Add an Image"""
pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
return pt()
def addImage2(self,fileupload,RESPONSE=None):
"""Add"""
#print "FU",fileupload
manage_AddImageDigilib(self,fileupload.filename,fileupload)
return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
#return self.REQUEST['URL1']+'/'+fileupload.filename
def ImportFiles(self,RESPONSE=None):
"""Import the existing files of a folder"""
files=os.listdir(self.ImageStoragePath)
ret=""
#print self.__dict__
for file in files:
if self.__dict__.has_key(file):
ret=ret+"<br>"+file+" already exists!"
else:
ret=ret+"<br>"+file+" created!"
newObj=ImageDigilib(file,file)
#print newObj,file
#print newObj
self._setObject(file,newObj)
#print ret
pt=PageTemplateFile('Products/ImageArchive/out.zpt',ret).__of__(self)
RESPONSE.redirect('manage_main')
def ImageCollection_config(self):
"""Nothing yet"""
pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self)
return pt()
def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,RESPONSE=None):
"""Change"""
self.title=title
self.ImageStoragePath=ImageStoragePath
self.ImageViewerPath=ImageViewerPath
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def show_selected_thumbs(self):
#ids=[]
return self.REQUEST.SESSION['filenames']
def show_thumbs(self):
ids=[]
for entry in self.__dict__:
#print entry
if hasattr(getattr(self,entry),'thumb'):
ids.append(entry)
#print ids
return ids
def thumblistSelected(self):
"""main template collection"""
pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)
return pt()
def thumblist(self):
"""main template collection"""
pt=PageTemplateFile('Products/ImageArchive/thumbs.zpt').__of__(self)
return pt()
def navig_html(self):
"""navigation"""
pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
return pt()
def index_html(self):
"""main template collection"""
if self.REQUEST.has_key('filename'):
filen=self.REQUEST['filename']
else:
filen=""
self.REQUEST.SESSION['filename']=filen
pt=PageTemplateFile('Products/ImageArchive/overview.zpt').__of__(self)
return pt()
def manage_AddImageCollectionForm(self):
"""Nothing yet"""
pt=PageTemplateFile('Products/ImageArchive/AddImageCollectionForm.zpt').__of__(self)
return pt()
def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,RESPONSE=None):
"""Add ImageCollection"""
newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath)
self._setObject(id,newObj)
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>