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']=""% 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']=""% 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']=""% 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 getThumbAttribute(self,id,attr): if hasattr(self,id): return getattr(getattr(self,id),attr) else: if attr=='title': return "Missing Image:%s" % id def getThumbFunction(self,id,attr): #return "DUMP" if hasattr(self,id): return getattr(getattr(self,id),attr)() 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)) rc.sort() 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 not file[0]==".": if self.__dict__.has_key(file): ret=ret+"
"+file+" already exists!" else: ret=ret+"
"+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 ids.sort() return ids def show_thumbs_selected_rows(self,numberOfColumns): """Ausgabe anzahl""" ids=self.show_selected_thumbs() self.REQUEST.SESSION['ids']=ids number=int(len(ids)/numberOfColumns)+1 self.REQUEST.SESSION['number']=range(number) return range(number+1) def show_thumbs_rows(self,numberOfColumns): """Ausgabe anzahl""" ids=self.show_thumbs() self.REQUEST.SESSION['ids']=ids number=int(len(ids)/numberOfColumns)+1 return range(number+1) def show_thumbs_columns(self,row,numberOfColumns): """Ausgabe einer Liste der Reihe""" ids=self.REQUEST.SESSION['ids'] max=len(ids) if (row*numberOfColumns)