Annotation of ImageArchive/ImageArchive.py.~1.6.~, 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(Folder,Persistent,Implicit):
! 24: """Anzeige object fuer digilib"""
! 25: meta_type="ImageDigilib"
! 26:
! 27: leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
! 28:
! 29: manage_options = Folder.manage_options+(
! 30:
! 31: {'label':'Add Metadata','action':'addMetaObjectForm'},
! 32:
! 33: )
! 34:
! 35: def addMetaObject(self,id,RESPONSE=None):
! 36: """Add an MetaObject"""
! 37: objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
! 38:
! 39: request=self.REQUEST
! 40: objectCreate=objectType.createObjectManager(id,request)
! 41: #for field in self.leiden_meta_fields:
! 42: # self.REQUEST[field]=argv[field]
! 43: self._setObject(id,objectCreate)
! 44:
! 45: objectCreate.propertysheets.meta.manage_editProperties(request)
! 46:
! 47: if RESPONSE is not None:
! 48: RESPONSE.redirect('manage_main')
! 49:
! 50:
! 51:
! 52:
! 53: def addMetaObjectForm(self):
! 54: """Add Form"""
! 55: pt=PageTemplateFile('Products/ImageArchive/addMetaObject.zpt').__of__(self)
! 56: return pt()
! 57:
! 58:
! 59: def __init__(self,id,filename,meta=None):
! 60: self.id=id
! 61: self.title=filename
! 62: self.filename=filename
! 63: self.meta=meta
! 64:
! 65: def getMeta(self):
! 66: """ausgabe der metadaten"""
! 67: return self.meta
! 68:
! 69: def uploadImage(self,fileupload,path_name):
! 70: """upload an Image from an Requast"""
! 71: #path_name=self.ImageStoragePath
! 72: filename=path_name+"/"+fileupload.filename
! 73: filedata=fileupload.read()
! 74: f=open(filename,"w")
! 75: f.write(filedata)
! 76: f.close()
! 77: os.chmod(filename,0644)
! 78: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
! 79:
! 80:
! 81:
! 82:
! 83: def download(self):
! 84: """download"""
! 85: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,highres"
! 86: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
! 87: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
! 88: return self.REQUEST.RESPONSE.redirect(path)
! 89:
! 90: def thumb(self):
! 91: """show thumb"""
! 92: thumbname=os.path.splitext(self.filename)[0]+".jpg"
! 93: ## if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname):
! 94: ## image=urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:18080/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=150&mo=lores").read()
! 95: ## f=open("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname,"w")
! 96: ## f.write(image)
! 97: ## f.close()
! 98: ## os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 150 &"% self.ImageViewerPath)
! 99:
! 100:
! 101: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"
! 102: #path="/thumbs"+self.ImageViewerPath+"/"+thumbname
! 103: self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
! 104: pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
! 105: return pt()
! 106:
! 107: def index_html(self):
! 108: """show image"""
! 109: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename
! 110: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
! 111: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
! 112: return self.REQUEST.RESPONSE.redirect(path)
! 113:
! 114:
! 115: def manage_AddImageDigilibForm(self):
! 116: """Nothing yet"""
! 117: pt=PageTemplateFile('Products/ImageArchive/AddImageDigilibForm.zpt').__of__(self)
! 118: return pt()
! 119:
! 120: def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
! 121: """Add ImageCollection"""
! 122: #fileupload=self.REQUEST['fileupload']
! 123: newObj=ImageDigilib(id,fileupload.filename,meta)
! 124:
! 125: self._setObject(id,newObj)
! 126: getattr(self,id).uploadImage(fileupload,self.ImageStoragePath)
! 127:
! 128: if RESPONSE is not None:
! 129: RESPONSE.redirect('manage_main')
! 130:
! 131:
! 132: class ImageCollection(Folder, Persistent, Implicit):
! 133: """Sammelordner für Bilder"""
! 134: meta_type="ImageCollection"
! 135:
! 136: genericMetaDataType="leiden_meta"
! 137:
! 138: leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
! 139:
! 140:
! 141: 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
! 142:
! 143: def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
! 144: self.id=id
! 145: self.title=title
! 146: self.ImageStoragePath=ImageStoragePath
! 147: self.ImageViewerPath=ImageViewerPath
! 148: self.defaultMetaString=defaultMetaString
! 149:
! 150: manage_options = Folder.manage_options+(
! 151: {'label':'Main Config','action':'ImageCollection_config'},
! 152: {'label':'Import','action':'ImportFiles'},
! 153: {'label':'Recalculate Metadata','action':'recalculateMeta'},
! 154: {'label':'Import Metadata','action':'importMetaForm'},
! 155: )
! 156:
! 157:
! 158: def importMetaForm(self):
! 159: """import metadata"""
! 160: pt=PageTemplateFile('Products/ImageArchive/importMeta.zpt').__of__(self)
! 161: return pt()
! 162:
! 163: def importMeta(self,fileupload,tag):
! 164: """import"""
! 165: filedata=fileupload.read()
! 166: dom=xml.dom.minidom.parseString(filedata)
! 167: rows=dom.getElementsByTagName(tag)
! 168: #print "ROWS",rows
! 169: request=self.REQUEST
! 170: for row in rows:
! 171:
! 172: for a in self.leiden_meta_fields:
! 173: self.REQUEST[a]=getText(row.getElementsByTagName(a)[0].childNodes)
! 174:
! 175: image_id=self.REQUEST['image_id']
! 176: if (not hasattr(self,image_id)) & (not image_id==""):
! 177: print image_id
! 178: newObj=ImageCollection(str(image_id),image_id,'','','')
! 179: self._setObject(str(image_id),newObj)
! 180:
! 181: id="leiden_meta_data_file"
! 182: self.REQUEST['id']=id
! 183: #objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
! 184: #objectCreate=objectType.createInObjectManager(id,request)
! 185: #href="http://localhost:8080/tests/testcollection/manage_addProduct/ImageMetaData/leiden_meta_factory/"
! 186: try:
! 187: addID=getattr(self,image_id)
! 188: objectCreate=addID.manage_addProduct['ImageMetaData'].leiden_meta_add(id)
! 189: #getattr(self,image_id)._setObject(id,objectCreate)
! 190: obj=getattr(addID,id)
! 191: obj.propertysheets.meta.manage_editProperties(request)
! 192: except:
! 193: """nothing"""
! 194: return "OK"
! 195:
! 196:
! 197:
! 198:
! 199: def meta_default(self,filename):
! 200: """url der metadaten"""
! 201: return self.defaultMetaString % filename
! 202:
! 203: def getThumbAttribute(self,id,attr):
! 204: if hasattr(self,id):
! 205: return getattr(getattr(self,id),attr)
! 206: else:
! 207: if attr=='title':
! 208: return "<b>Missing Image:%s</b>" % id
! 209:
! 210: def getThumbFunction(self,id,attr):
! 211: #return "DUMP"
! 212: if hasattr(self,id):
! 213: return getattr(getattr(self,id),attr)()
! 214:
! 215:
! 216: def xmlinput(self,url):
! 217: """Anzeige von ausgewaehlten thumbs"""
! 218: #return url
! 219:
! 220: url=urllib.unquote(url)
! 221: xmldoc=urllib.urlopen(url).read()
! 222: #print url
! 223: dom=xml.dom.minidom.parseString(xmldoc)
! 224:
! 225: images=dom.getElementsByTagName('imagename')
! 226: rc=[]
! 227: for image in images:
! 228: text=getText(image.childNodes)
! 229: if not text=="":
! 230: rc.append(str(text))
! 231: rc.sort()
! 232: self.REQUEST.SESSION['filenames']=rc
! 233: pt=PageTemplateFile('Products/ImageArchive/overview_selected.zpt').__of__(self)
! 234: return pt()
! 235:
! 236: def recalculateMeta(self):
! 237: """recalculate the metadata"""
! 238:
! 239: for entryid in self.__dict__:
! 240: entry=getattr(self,entryid)
! 241: if hasattr(entry,'meta_type'):
! 242:
! 243: if entry.meta_type=="ImageDigilib":
! 244: entry.meta=entry.meta_default(entry.getId())
! 245: return "OK"
! 246:
! 247: def addImage(self):
! 248: """Add an Image"""
! 249: pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
! 250: return pt()
! 251:
! 252: def addImage2(self,fileupload,meta,use_default,RESPONSE=None):
! 253: """Add"""
! 254: #print "FU",fileupload
! 255:
! 256: if use_default:
! 257: try:
! 258: meta=self.meta_default(fileupload.filename)
! 259: except:
! 260: meta=None
! 261:
! 262: manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
! 263: return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
! 264: #return self.REQUEST['URL1']+'/'+fileupload.filename
! 265:
! 266: def ImportFiles2(self,RESPONSE=None):
! 267: """Import the existing files of a folder"""
! 268: files=os.listdir(self.ImageStoragePath)
! 269: ret=""
! 270: #print self.__dict__
! 271: for file in files:
! 272: if not file[0]==".":
! 273: if self.__dict__.has_key(file):
! 274:
! 275: ret=ret+"<br>"+file+" already exists!"
! 276: else:
! 277: ret=ret+"<br>"+file+" created!"
! 278: meta=self.meta_default(file)
! 279: newObj=ImageDigilib(file,file,meta)
! 280: #print newObj,file
! 281: #print newObj
! 282: self._setObject(file,newObj)
! 283: #print ret
! 284: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
! 285: #print self.ImageStoragePath
! 286: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
! 287: RESPONSE.redirect('manage_main')
! 288:
! 289: def ImportFiles(self,RESPONSE=None):
! 290: """Import the existing files of a folder"""
! 291: files=os.listdir(self.ImageStoragePath)
! 292: ret=""
! 293: #print self.__dict__
! 294: for file in files:
! 295: if not file[0]==".":
! 296: if self.__dict__.has_key(file):
! 297:
! 298: ret=ret+"<br>"+file+" already exists!"
! 299: else:
! 300: ret=ret+"<br>"+file+" created!"
! 301: newObj=ImageDigilib(file,file)
! 302: #print newObj,file
! 303: #print newObj
! 304: try:
! 305: self._setObject(file,newObj)
! 306: except:
! 307: """nothing yet"""
! 308: #print ret
! 309: #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
! 310: #print self.ImageStoragePath
! 311: print os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
! 312: RESPONSE.redirect('manage_main')
! 313:
! 314: def ImageCollection_config(self):
! 315: """Nothing yet"""
! 316: if not hasattr(self,'defaultMetaString'):
! 317: self.defaultMetaString=""
! 318:
! 319: pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self)
! 320: return pt()
! 321:
! 322: def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
! 323: """Change"""
! 324: self.title=title
! 325: self.ImageStoragePath=ImageStoragePath
! 326: self.ImageViewerPath=ImageViewerPath
! 327: self.defaultMetaString=defaultMetaString
! 328:
! 329: if RESPONSE is not None:
! 330: RESPONSE.redirect('manage_main')
! 331:
! 332: def show_selected_thumbs(self):
! 333: #ids=[]
! 334:
! 335: return self.REQUEST.SESSION['filenames']
! 336:
! 337: def show_thumbs(self):
! 338: ids=[]
! 339: for entry in self.__dict__:
! 340: #print entry
! 341: if hasattr(getattr(self,entry),'thumb'):
! 342: ids.append(entry)
! 343:
! 344: #print ids
! 345: ids.sort()
! 346: return ids
! 347:
! 348: def show_thumbs_selected_rows(self,numberOfColumns):
! 349: """Ausgabe anzahl"""
! 350: ids=self.show_selected_thumbs()
! 351: self.REQUEST.SESSION['ids']=ids
! 352: number=int(len(ids)/numberOfColumns)+1
! 353: self.REQUEST.SESSION['number']=range(number)
! 354: return range(number+1)
! 355:
! 356: def show_thumbs_rows(self,numberOfColumns):
! 357: """Ausgabe anzahl"""
! 358: ids=self.show_thumbs()
! 359: self.REQUEST.SESSION['ids']=ids
! 360: number=int(len(ids)/numberOfColumns)+1
! 361:
! 362: return range(number+1)
! 363:
! 364: def show_thumbs_columns(self,row,numberOfColumns):
! 365: """Ausgabe einer Liste der Reihe"""
! 366: ids=self.REQUEST.SESSION['ids']
! 367: max=len(ids)
! 368: if (row*numberOfColumns)<max:
! 369: return ids[(row-1)*numberOfColumns:row*numberOfColumns]
! 370: else:
! 371: return ids[(row-1)*numberOfColumns:]
! 372: def thumblistSelected_old(self):
! 373: """main template collection"""
! 374: pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)
! 375: return pt()
! 376:
! 377: def thumblistSelected(self):
! 378: """main template collection"""
! 379: pt=PageTemplateFile('Products/ImageArchive/thumbselected2.zpt').__of__(self)
! 380: return pt()
! 381:
! 382: def thumblist_old(self):
! 383: """main template collection"""
! 384: pt=PageTemplateFile('Products/ImageArchive/thumbs.zpt').__of__(self)
! 385: return pt()
! 386:
! 387: def thumblist(self):
! 388: """main template collection"""
! 389: pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)
! 390: return pt()
! 391:
! 392: def navig_html(self):
! 393: """navigation"""
! 394: pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
! 395: return pt()
! 396:
! 397:
! 398: def index_html(self):
! 399: """main template collection"""
! 400: if self.REQUEST.has_key('filename'):
! 401: filen=self.REQUEST['filename']
! 402: else:
! 403: filen=""
! 404: self.REQUEST.SESSION['filename']=filen
! 405: pt=PageTemplateFile('Products/ImageArchive/overview.zpt').__of__(self)
! 406: return pt()
! 407:
! 408: def manage_AddImageCollectionForm(self):
! 409: """Nothing yet"""
! 410: pt=PageTemplateFile('Products/ImageArchive/AddImageCollectionForm.zpt').__of__(self)
! 411: return pt()
! 412:
! 413: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
! 414: """Add ImageCollection"""
! 415: newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
! 416: self._setObject(id,newObj)
! 417:
! 418: if RESPONSE is not None:
! 419: RESPONSE.redirect('manage_main')
! 420:
! 421:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>