--- ImageArchive/ImageArchive.py 2003/12/04 20:49:44 1.4
+++ ImageArchive/ImageArchive.py 2003/12/10 19:01:58 1.7
@@ -20,10 +20,42 @@ def getText(nodelist):
return rc
-class ImageDigilib(SimpleItem,Persistent,Implicit):
+class ImageDigilib(Folder,Persistent,Implicit):
"""Anzeige object fuer digilib"""
meta_type="ImageDigilib"
+ leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
+
+ manage_options = Folder.manage_options+(
+
+ {'label':'Add Metadata','action':'addMetaObjectForm'},
+
+ )
+
+ def addMetaObject(self,id,RESPONSE=None):
+ """Add an MetaObject"""
+ objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
+
+ request=self.REQUEST
+ objectCreate=objectType.createObjectManager(id,request)
+ #for field in self.leiden_meta_fields:
+ # self.REQUEST[field]=argv[field]
+ self._setObject(id,objectCreate)
+
+ objectCreate.propertysheets.meta.manage_editProperties(request)
+
+ if RESPONSE is not None:
+ RESPONSE.redirect('manage_main')
+
+
+
+
+ def addMetaObjectForm(self):
+ """Add Form"""
+ pt=PageTemplateFile('Products/ImageArchive/addMetaObject.zpt').__of__(self)
+ return pt()
+
+
def __init__(self,id,filename,meta=None):
self.id=id
self.title=filename
@@ -45,6 +77,7 @@ class ImageDigilib(SimpleItem,Persistent
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)
+
@@ -100,8 +133,18 @@ def manage_AddImageDigilib(self,id,fileu
class ImageCollection(Folder, Persistent, Implicit):
"""Sammelordner für Bilder"""
meta_type="ImageCollection"
+
+ genericMetaDataType="leiden_meta"
+
+ leiden_meta_fields=['image_id','date','country','place','people','description','photographer']
+
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 scaleThumbs(self):
+ """scale thumbs"""
+ os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
+ return "RESCALING STARTED"
def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
self.id=id
@@ -113,11 +156,92 @@ class ImageCollection(Folder, Persistent
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'ImageCollection_config'},
{'label':'Import','action':'ImportFiles'},
- {'label':'Recalculate Metadate','action':'recalculateMeta'},
-
+ {'label':'Recalculate Metadata','action':'recalculateMeta'},
+ {'label':'Import Metadata','action':'importMetaForm'},
+ {'label':'Rescale thumbs','action':'scaleThumbs'},
)
+ def importMetaForm(self):
+ """import metadata"""
+ pt=PageTemplateFile('Products/ImageArchive/importMeta.zpt').__of__(self)
+ return pt()
+
+ def importMeta(self,fileupload,tag):
+ """import"""
+ filedata=fileupload.read()
+ dom=xml.dom.minidom.parseString(filedata)
+ rows=dom.getElementsByTagName(tag)
+ #print "ROWS",rows
+ request=self.REQUEST
+ for row in rows:
+
+ for a in self.leiden_meta_fields:
+ self.REQUEST[a]=getText(row.getElementsByTagName(a)[0].childNodes)
+
+ image_id=self.REQUEST['image_id']
+ if (not hasattr(self,image_id)) & (not image_id==""):
+ print image_id
+ newObj=ImageCollection(str(image_id),image_id,'','','')
+ self._setObject(str(image_id),newObj)
+
+ id="leiden_meta_data_file"
+ self.REQUEST['id']=id
+ #objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
+ #objectCreate=objectType.createInObjectManager(id,request)
+ #href="http://localhost:8080/tests/testcollection/manage_addProduct/ImageMetaData/leiden_meta_factory/"
+ try:
+ addID=getattr(self,image_id)
+ objectCreate=addID.manage_addProduct['ImageMetaData'].leiden_meta_add(id)
+ #getattr(self,image_id)._setObject(id,objectCreate)
+ obj=getattr(addID,id)
+ obj.propertysheets.meta.manage_editProperties(request)
+ except:
+ """nothing"""
+ return "OK"
+
+
+ def nextImage(self,request,selected=None):
+ """show nextimage"""
+ ids=self.show_thumbs()
+ if request.SESSION.has_key("filename"):
+ filename=request.SESSION["filename"]
+ try:
+ nr=ids.index(filename)
+ except:
+ nr=0
+ else:
+ nr=0
+
+ if nr==len(ids)-1:
+ return ""
+ else:
+ if selected:
+ return "next image"
+ else:
+ return "next image"
+
+ def prevImage(self,request,selected=None):
+ """show nextimage"""
+ #return self.getId()
+ ids=self.show_thumbs()
+ if request.SESSION.has_key("filename"):
+ filename=request.SESSION["filename"]
+ try:
+ nr=ids.index(filename)
+ except:
+ nr=0
+ else:
+ nr=0
+
+ if nr==0:
+ return ""
+ else:
+ if selected:
+ return "previous image"
+ else:
+ return "previous image"
+
def meta_default(self,filename):
"""url der metadaten"""
return self.defaultMetaString % filename
@@ -138,8 +262,10 @@ class ImageCollection(Folder, Persistent
def xmlinput(self,url):
"""Anzeige von ausgewaehlten thumbs"""
#return url
- xmldoc=urllib.urlopen(url).read()
+ url=urllib.unquote(url)
+ xmldoc=urllib.urlopen(url).read()
+ #print url
dom=xml.dom.minidom.parseString(xmldoc)
images=dom.getElementsByTagName('imagename')
@@ -169,7 +295,7 @@ class ImageCollection(Folder, Persistent
pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
return pt()
- def addImage2(self,fileupload,meta,use_default,RESPONSE=None):
+ def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
"""Add"""
#print "FU",fileupload
@@ -178,6 +304,8 @@ class ImageCollection(Folder, Persistent
meta=self.meta_default(fileupload.filename)
except:
meta=None
+ else:
+ meta=None
manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
@@ -203,7 +331,7 @@ class ImageCollection(Folder, Persistent
#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)
+ os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
RESPONSE.redirect('manage_main')
def ImportFiles(self,RESPONSE=None):
@@ -228,7 +356,7 @@ class ImageCollection(Folder, Persistent
#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)
+ os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageStoragePath)
RESPONSE.redirect('manage_main')
def ImageCollection_config(self):
@@ -309,12 +437,29 @@ class ImageCollection(Folder, Persistent
pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)
return pt()
+ def navig_selected_html(self):
+ """navigation"""
+ #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
+ pt=PageTemplateFile('Products/ImageArchive/navigation_selected.zpt').__of__(self)
+ return pt()
+
def navig_html(self):
"""navigation"""
+ #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
return pt()
+ def selection(self):
+ """show only selected"""
+ if self.REQUEST.has_key('filename'):
+ filen=self.REQUEST['filename']
+ else:
+ filen=""
+ self.REQUEST.SESSION['filename']=filen
+ pt=PageTemplateFile('Products/ImageArchive/overview_selected2.zpt').__of__(self)
+ return pt()
+
def index_html(self):
"""main template collection"""
if self.REQUEST.has_key('filename'):