--- ImageArchive/ImageArchive.py 2003/12/03 08:46:45 1.1 +++ ImageArchive/ImageArchive.py 2003/12/04 20:49:44 1.4 @@ -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,41 @@ 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) + 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 @@ -116,23 +148,63 @@ class ImageCollection(Folder, Persistent 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 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""" @@ -140,30 +212,40 @@ class ImageCollection(Folder, Persistent ret="" #print self.__dict__ for file in files: - 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) + 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 + try: + self._setObject(file,newObj) + except: + """nothing yet""" #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') @@ -178,19 +260,55 @@ class ImageCollection(Folder, Persistent #print entry if hasattr(getattr(self,entry),'thumb'): ids.append(entry) + #print ids + ids.sort() return ids - def thumblistSelected(self): + 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)