--- ImageArchive/ImageArchive.py 2003/12/03 15:51:21 1.2 +++ ImageArchive/ImageArchive.py 2003/12/04 19:02:59 1.3 @@ -24,11 +24,16 @@ class ImageDigilib(SimpleItem,Persistent """Anzeige object fuer digilib""" meta_type="ImageDigilib" - def __init__(self,id,filename): + def __init__(self,id,filename,meta=None): self.id=id self.title=filename self.filename=filename + self.meta=meta + def getMeta(self): + """ausgabe der metadaten""" + return self.meta + def uploadImage(self,fileupload,path_name): """upload an Image from an Requast""" #path_name=self.ImageStoragePath @@ -38,27 +43,32 @@ class ImageDigilib(SimpleItem,Persistent f.write(filedata) f.close() os.chmod(filename,0644) + os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath) + + + def download(self): """download""" - path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=file" + path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,highres" #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) + 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) - #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 + path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores" + #path="/thumbs"+self.ImageViewerPath+"/"+thumbname + self.REQUEST.SESSION['string']=""% path pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self) return pt() @@ -75,10 +85,10 @@ def manage_AddImageDigilibForm(self): pt=PageTemplateFile('Products/ImageArchive/AddImageDigilibForm.zpt').__of__(self) return pt() -def manage_AddImageDigilib(self,id,fileupload,RESPONSE=None): +def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None): """Add ImageCollection""" #fileupload=self.REQUEST['fileupload'] - newObj=ImageDigilib(id,fileupload.filename) + newObj=ImageDigilib(id,fileupload.filename,meta) self._setObject(id,newObj) getattr(self,id).uploadImage(fileupload,self.ImageStoragePath) @@ -90,19 +100,28 @@ def manage_AddImageDigilib(self,id,fileu class ImageCollection(Folder, Persistent, Implicit): """Sammelordner für Bilder""" meta_type="ImageCollection" - - def __init__(self,id,title,ImageStoragePath,ImageViewerPath): + + 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 __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString): self.id=id self.title=title self.ImageStoragePath=ImageStoragePath self.ImageViewerPath=ImageViewerPath - + self.defaultMetaString=defaultMetaString manage_options = Folder.manage_options+( {'label':'Main Config','action':'ImageCollection_config'}, {'label':'Import','action':'ImportFiles'}, + {'label':'Recalculate Metadate','action':'recalculateMeta'}, + ) + + def meta_default(self,filename): + """url der metadaten""" + return self.defaultMetaString % filename + def getThumbAttribute(self,id,attr): if hasattr(self,id): return getattr(getattr(self,id),attr) @@ -134,18 +153,58 @@ class ImageCollection(Folder, Persistent pt=PageTemplateFile('Products/ImageArchive/overview_selected.zpt').__of__(self) return pt() + def recalculateMeta(self): + """recalculate the metadata""" + + for entryid in self.__dict__: + entry=getattr(self,entryid) + if hasattr(entry,'meta_type'): + + if entry.meta_type=="ImageDigilib": + entry.meta=entry.meta_default(entry.getId()) + return "OK" def addImage(self): """Add an Image""" pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self) return pt() - def addImage2(self,fileupload,RESPONSE=None): + def addImage2(self,fileupload,meta,use_default,RESPONSE=None): """Add""" #print "FU",fileupload - manage_AddImageDigilib(self,fileupload.filename,fileupload) + + if use_default: + try: + meta=self.meta_default(fileupload.filename) + except: + meta=None + + manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta) return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename) #return self.REQUEST['URL1']+'/'+fileupload.filename + + def ImportFiles2(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!" + meta=self.meta_default(file) + newObj=ImageDigilib(file,file,meta) + #print newObj,file + #print newObj + self._setObject(file,newObj) + #print ret + #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') def ImportFiles(self,RESPONSE=None): """Import the existing files of a folder""" @@ -162,22 +221,28 @@ class ImageCollection(Folder, Persistent newObj=ImageDigilib(file,file) #print newObj,file #print newObj - self._setObject(file,newObj) + self._setObject(file,newObj) #print ret - pt=PageTemplateFile('Products/ImageArchive/out.zpt',ret).__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') def ImageCollection_config(self): """Nothing yet""" + if not hasattr(self,'defaultMetaString'): + self.defaultMetaString="" + pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self) return pt() - def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,RESPONSE=None): + def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None): """Change""" self.title=title self.ImageStoragePath=ImageStoragePath self.ImageViewerPath=ImageViewerPath - + self.defaultMetaString=defaultMetaString + if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -262,9 +327,9 @@ def manage_AddImageCollectionForm(self): pt=PageTemplateFile('Products/ImageArchive/AddImageCollectionForm.zpt').__of__(self) return pt() -def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,RESPONSE=None): +def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None): """Add ImageCollection""" - newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath) + newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString) self._setObject(id,newObj) if RESPONSE is not None: