Annotation of ImageArchive/ImageArchive.py.~1.5.~, revision 1.1
1.1 ! dwinter 1: from OFS.Folder import Folder
! 2: from OFS.SimpleItem import SimpleItem
! 3: from Globals import Persistent
! 4: from Acquisition import Implicit
! 5: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
! 6: from Products.PageTemplates.PageTemplate import PageTemplate
! 7: import re
! 8: import os
! 9: import os.path
! 10: import urllib
! 11: import xml.dom.minidom
! 12:
! 13: def getText(nodelist):
! 14:
! 15: rc = ""
! 16: for node in nodelist:
! 17:
! 18: if node.nodeType == node.TEXT_NODE:
! 19: rc = rc + node.data
! 20: return rc
! 21:
! 22:
! 23: class ImageDigilib(SimpleItem,Persistent,Implicit):
! 24: """Anzeige object fuer digilib"""
! 25: meta_type="ImageDigilib"
! 26:
! 27: def __init__(self,id,filename,meta=None):
! 28: self.id=id
! 29: self.title=filename
! 30: self.filename=filename
! 31: self.meta=meta
! 32:
! 33: def getMeta(self):
! 34: """ausgabe der metadaten"""
! 35: return self.meta
! 36:
! 37: def uploadImage(self,fileupload,path_name):
! 38: """upload an Image from an Requast"""
! 39: #path_name=self.ImageStoragePath
! 40: filename=path_name+"/"+fileupload.filename
! 41: filedata=fileupload.read()
! 42: f=open(filename,"w")
! 43: f.write(filedata)
! 44: f.close()
! 45: os.chmod(filename,0644)
! 46: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
! 47:
! 48:
! 49:
! 50:
! 51: def download(self):
! 52: """download"""
! 53: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,highres"
! 54: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
! 55: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
! 56: return self.REQUEST.RESPONSE.redirect(path)
! 57:
! 58: def thumb(self):
! 59: """show thumb"""
! 60: thumbname=os.path.splitext(self.filename)[0]+".jpg"
! 61: ## if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname):
! 62: ## image=urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:18080/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=150&mo=lores").read()
! 63: ## f=open("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname,"w")
! 64: ## f.write(image)
! 65: ## f.close()
! 66: ## os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 150 &"% self.ImageViewerPath)
! 67:
! 68:
! 69: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"
! 70: #path="/thumbs"+self.ImageViewerPath+"/"+thumbname
! 71: self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
! 72: pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
! 73: return pt()
! 74:
! 75: def index_html(self):
! 76: """show image"""
! 77: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename
! 78: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
! 79: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
! 80: return self.REQUEST.RESPONSE.redirect(path)
! 81:
! 82:
! 83: def manage_AddImageDigilibForm(self):
! 84: """Nothing yet"""
! 85: pt=PageTemplateFile('Products/ImageArchive/AddImageDigilibForm.zpt').__of__(self)
! 86: return pt()
! 87:
! 88: def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
! 89: """Add ImageCollection"""
! 90: #fileupload=self.REQUEST['fileupload']
! 91: newObj=ImageDigilib(id,fileupload.filename,meta)
! 92:
! 93: self._setObject(id,newObj)
! 94: getattr(self,id).uploadImage(fileupload,self.ImageStoragePath)
! 95:
! 96: if RESPONSE is not None:
! 97: RESPONSE.redirect('manage_main')
! 98:
! 99:
! 100: class ImageCollection(Folder, Persistent, Implicit):
! 101: """Sammelordner für Bilder"""
! 102: meta_type="ImageCollection"
! 103:
! 104: 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
! 105:
! 106: def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
! 107: self.id=id
! 108: self.title=title
! 109: self.ImageStoragePath=ImageStoragePath
! 110: self.ImageViewerPath=ImageViewerPath
! 111: self.defaultMetaString=defaultMetaString
! 112:
! 113: manage_options = Folder.manage_options+(
! 114: {'label':'Main Config','action':'ImageCollection_config'},
! 115: {'label':'Import','action':'ImportFiles'},
! 116: {'label':'Recalculate Metadate','action':'recalculateMeta'},
! 117:
! 118: )
! 119:
! 120:
! 121: def meta_default(self,filename):
! 122: """url der metadaten"""
! 123: return self.defaultMetaString % filename
! 124:
! 125: def getThumbAttribute(self,id,attr):
! 126: if hasattr(self,id):
! 127: return getattr(getattr(self,id),attr)
! 128: else:
! 129: if attr=='title':
! 130: return "<b>Missing Image:%s</b>" % id
! 131:
! 132: def getThumbFunction(self,id,attr):
! 133: #return "DUMP"
! 134: if hasattr(self,id):
! 135: return getattr(getattr(self,id),attr)()
! 136:
! 137:
! 138: def xmlinput(self,url):
! 139: """Anzeige von ausgewaehlten thumbs"""
! 140: #return url
! 141:
! 142: url=urllib.unquote(url)
! 143: xmldoc=urllib.urlopen(url).read()
! 144: #print url
! 145: dom=xml.dom.minidom.parseString(xmldoc)
! 146:
! 147: images=dom.getElementsByTagName('imagename')
! 148: rc=[]
! 149: for image in images:
! 150: text=getText(image.childNodes)
! 151: if not text=="":
! 152: rc.append(str(text))
! 153: rc.sort()
! 154: self.REQUEST.SESSION['filenames']=rc
! 155: pt=PageTemplateFile('Products/ImageArchive/overview_selected.zpt').__of__(self)
! 156: return pt()
! 157:
! 158: def recalculateMeta(self):
! 159: """recalculate the metadata"""
! 160:
! 161: for entryid in self.__dict__:
! 162: entry=getattr(self,entryid)
! 163: if hasattr(entry,'meta_type'):
! 164:
! 165: if entry.meta_type=="ImageDigilib":
! 166: entry.meta=entry.meta_default(entry.getId())
! 167: return "OK"
! 168:
! 169: def addImage(self):
! 170: """Add an Image"""
! 171: pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
! 172: return pt()
! 173:
! 174: def addImage2(self,fileupload,meta,use_default,RESPONSE=None):
! 175: """Add"""
! 176: #print "FU",fileupload
! 177:
! 178: if use_default:
! 179: try:
! 180: meta=self.meta_default(fileupload.filename)
! 181: except:
! 182: meta=None
! 183:
! 184: manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
! 185: return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
! 186: #return self.REQUEST['URL1']+'/'+fileupload.filename
! 187:
! 188: def ImportFiles2(self,RESPONSE=None):
! 189: """Import the existing files of a folder"""
! 190: files=os.listdir(self.ImageStoragePath)
! 191: ret=""
! 192: #print self.__dict__
! 193: for file in files:
! 194: if not file[0]==".":
! 195: if self.__dict__.has_key(file):
! 196:
! 197: ret=ret+"<br>"+file+" already exists!"
! 198: else:
! 199: ret=ret+"<br>"+file+" created!"
! 200: meta=self.meta_default(file)
! 201: newObj=ImageDigilib(file,file,meta)
! 202: #print newObj,file
! 203: #print newObj
! 204: self._setObject(file,newObj)
! 205: #print ret
! 206: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
! 207: #print self.ImageStoragePath
! 208: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
! 209: RESPONSE.redirect('manage_main')
! 210:
! 211: def ImportFiles(self,RESPONSE=None):
! 212: """Import the existing files of a folder"""
! 213: files=os.listdir(self.ImageStoragePath)
! 214: ret=""
! 215: #print self.__dict__
! 216: for file in files:
! 217: if not file[0]==".":
! 218: if self.__dict__.has_key(file):
! 219:
! 220: ret=ret+"<br>"+file+" already exists!"
! 221: else:
! 222: ret=ret+"<br>"+file+" created!"
! 223: newObj=ImageDigilib(file,file)
! 224: #print newObj,file
! 225: #print newObj
! 226: try:
! 227: self._setObject(file,newObj)
! 228: except:
! 229: """nothing yet"""
! 230: #print ret
! 231: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
! 232: #print self.ImageStoragePath
! 233: print os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
! 234: RESPONSE.redirect('manage_main')
! 235:
! 236: def ImageCollection_config(self):
! 237: """Nothing yet"""
! 238: if not hasattr(self,'defaultMetaString'):
! 239: self.defaultMetaString=""
! 240:
! 241: pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self)
! 242: return pt()
! 243:
! 244: def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
! 245: """Change"""
! 246: self.title=title
! 247: self.ImageStoragePath=ImageStoragePath
! 248: self.ImageViewerPath=ImageViewerPath
! 249: self.defaultMetaString=defaultMetaString
! 250:
! 251: if RESPONSE is not None:
! 252: RESPONSE.redirect('manage_main')
! 253:
! 254: def show_selected_thumbs(self):
! 255: #ids=[]
! 256:
! 257: return self.REQUEST.SESSION['filenames']
! 258:
! 259: def show_thumbs(self):
! 260: ids=[]
! 261: for entry in self.__dict__:
! 262: #print entry
! 263: if hasattr(getattr(self,entry),'thumb'):
! 264: ids.append(entry)
! 265:
! 266: #print ids
! 267: ids.sort()
! 268: return ids
! 269:
! 270: def show_thumbs_selected_rows(self,numberOfColumns):
! 271: """Ausgabe anzahl"""
! 272: ids=self.show_selected_thumbs()
! 273: self.REQUEST.SESSION['ids']=ids
! 274: number=int(len(ids)/numberOfColumns)+1
! 275: self.REQUEST.SESSION['number']=range(number)
! 276: return range(number+1)
! 277:
! 278: def show_thumbs_rows(self,numberOfColumns):
! 279: """Ausgabe anzahl"""
! 280: ids=self.show_thumbs()
! 281: self.REQUEST.SESSION['ids']=ids
! 282: number=int(len(ids)/numberOfColumns)+1
! 283:
! 284: return range(number+1)
! 285:
! 286: def show_thumbs_columns(self,row,numberOfColumns):
! 287: """Ausgabe einer Liste der Reihe"""
! 288: ids=self.REQUEST.SESSION['ids']
! 289: max=len(ids)
! 290: if (row*numberOfColumns)<max:
! 291: return ids[(row-1)*numberOfColumns:row*numberOfColumns]
! 292: else:
! 293: return ids[(row-1)*numberOfColumns:]
! 294: def thumblistSelected_old(self):
! 295: """main template collection"""
! 296: pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)
! 297: return pt()
! 298:
! 299: def thumblistSelected(self):
! 300: """main template collection"""
! 301: pt=PageTemplateFile('Products/ImageArchive/thumbselected2.zpt').__of__(self)
! 302: return pt()
! 303:
! 304: def thumblist_old(self):
! 305: """main template collection"""
! 306: pt=PageTemplateFile('Products/ImageArchive/thumbs.zpt').__of__(self)
! 307: return pt()
! 308:
! 309: def thumblist(self):
! 310: """main template collection"""
! 311: pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)
! 312: return pt()
! 313:
! 314: def navig_html(self):
! 315: """navigation"""
! 316: pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
! 317: return pt()
! 318:
! 319:
! 320: def index_html(self):
! 321: """main template collection"""
! 322: if self.REQUEST.has_key('filename'):
! 323: filen=self.REQUEST['filename']
! 324: else:
! 325: filen=""
! 326: self.REQUEST.SESSION['filename']=filen
! 327: pt=PageTemplateFile('Products/ImageArchive/overview.zpt').__of__(self)
! 328: return pt()
! 329:
! 330: def manage_AddImageCollectionForm(self):
! 331: """Nothing yet"""
! 332: pt=PageTemplateFile('Products/ImageArchive/AddImageCollectionForm.zpt').__of__(self)
! 333: return pt()
! 334:
! 335: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
! 336: """Add ImageCollection"""
! 337: newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
! 338: self._setObject(id,newObj)
! 339:
! 340: if RESPONSE is not None:
! 341: RESPONSE.redirect('manage_main')
! 342:
! 343:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>