Diff for /ImageArchive/ImageArchive.py between versions 1.3 and 1.12

version 1.3, 2003/12/04 19:02:59 version 1.12, 2004/01/06 16:47:49
Line 20  def getText(nodelist): Line 20  def getText(nodelist):
     return rc      return rc
   
   
 class ImageDigilib(SimpleItem,Persistent,Implicit):  class ImageDigilib(Folder,Persistent,Implicit):
     """Anzeige object fuer digilib"""      """Anzeige object fuer digilib"""
     meta_type="ImageDigilib"      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):      def __init__(self,id,filename,meta=None):
         self.id=id          self.id=id
         self.title=filename          self.title=filename
Line 48  class ImageDigilib(SimpleItem,Persistent Line 80  class ImageDigilib(SimpleItem,Persistent
   
           
                   
           
     def download(self):      def download(self):
         """download"""          """download"""
         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,highres"          path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,highres"
Line 65  class ImageDigilib(SimpleItem,Persistent Line 98  class ImageDigilib(SimpleItem,Persistent
 ##             f.close()  ##             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)  ##             os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 150 &"% self.ImageViewerPath)
                           
           #DEVEL:take nausikaa for server solution
                   
         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100&mo=lores"          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          #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
         self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path          self.REQUEST.SESSION['string']="<img width=100 border=\"0\" src=\"%s\">"% path
         pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
         return pt()          return pt()
           
     def index_html(self):      def index_html(self):
         """show image"""          """show image"""
           #DEVELOP: take first one for server
           
         path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename          path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename
   
           #path="http://localhost:8080/mpiwg/online/"+self.ImageViewerPath+"/"+self.filename
         #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path          #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
         #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)          #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
         return self.REQUEST.RESPONSE.redirect(path)          return self.REQUEST.RESPONSE.redirect(path)
Line 101  class ImageCollection(Folder, Persistent Line 139  class ImageCollection(Folder, Persistent
     """Sammelordner für Bilder"""      """Sammelordner für Bilder"""
     meta_type="ImageCollection"      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      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):      def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
         self.id=id          self.id=id
         self.title=title          self.title=title
Line 113  class ImageCollection(Folder, Persistent Line 161  class ImageCollection(Folder, Persistent
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Main Config','action':'ImageCollection_config'},          {'label':'Main Config','action':'ImageCollection_config'},
         {'label':'Import','action':'ImportFiles'},          {'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 "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
               else:
                   return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
               
       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 "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
               else:
                   return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
           
     def meta_default(self,filename):      def meta_default(self,filename):
         """url der metadaten"""          """url der metadaten"""
         return self.defaultMetaString % filename          return self.defaultMetaString % filename
Line 138  class ImageCollection(Folder, Persistent Line 267  class ImageCollection(Folder, Persistent
     def xmlinput(self,url):      def xmlinput(self,url):
         """Anzeige von ausgewaehlten thumbs"""          """Anzeige von ausgewaehlten thumbs"""
         #return url          #return url
         xmldoc=urllib.urlopen(url).read()  
                   
           url=urllib.unquote(url)
           xmldoc=urllib.urlopen(url).read()
           #print url
         dom=xml.dom.minidom.parseString(xmldoc)          dom=xml.dom.minidom.parseString(xmldoc)
                   
         images=dom.getElementsByTagName('imagename')          images=dom.getElementsByTagName('imagename')
Line 169  class ImageCollection(Folder, Persistent Line 300  class ImageCollection(Folder, Persistent
         pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
         return pt()          return pt()
           
     def addImage2(self,fileupload,meta,use_default,RESPONSE=None):      def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
         """Add"""          """Add"""
         #print "FU",fileupload          #print "FU",fileupload
   
Line 178  class ImageCollection(Folder, Persistent Line 309  class ImageCollection(Folder, Persistent
                 meta=self.meta_default(fileupload.filename)                  meta=self.meta_default(fileupload.filename)
             except:              except:
                 meta=None                  meta=None
           else:
               meta=None
                                   
         manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)          manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)
         return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)          return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
Line 203  class ImageCollection(Folder, Persistent Line 336  class ImageCollection(Folder, Persistent
         #print ret          #print ret
         #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)          #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
         #print self.ImageStoragePath          #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')          RESPONSE.redirect('manage_main')
           
     def ImportFiles(self,RESPONSE=None):      def ImportFiles(self,RESPONSE=None):
Line 221  class ImageCollection(Folder, Persistent Line 354  class ImageCollection(Folder, Persistent
                     newObj=ImageDigilib(file,file)                      newObj=ImageDigilib(file,file)
                     #print newObj,file                      #print newObj,file
                     #print newObj                      #print newObj
                       try:
                     self._setObject(file,newObj)                      self._setObject(file,newObj)
                       except:
                           """nothing yet"""
         #print ret          #print ret
         #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)          #pt=PageTemplateFile('Products/ImageArchive/out.zpt').__of__(self)
         #print self.ImageStoragePath          #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')          RESPONSE.redirect('manage_main')
                   
     def ImageCollection_config(self):      def ImageCollection_config(self):
Line 262  class ImageCollection(Folder, Persistent Line 398  class ImageCollection(Folder, Persistent
         ids.sort()          ids.sort()
         return ids          return ids
   
       def firstSets(self,selected=None):
           ids=self.show_thumbs()
           if selected:
               return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
           else:
               return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
   
       def lastSets(self,selected=None):
           ids=self.show_thumbs()
           colRows=self.getColTimesRow()
           
           if colRows[1]:
               nr=len(ids)-colRows[0]*colRows[1]
           else:
               nr=0
               
           if nr<0:
               nr=0
           
           if selected:
               return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">last set</a>"
           else:
               return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">last sets</a>"
   
           
                   
       def nextSets(self,selected=None):
           """show nextimage"""
           ids=self.show_thumbs()
           colRows=self.getColTimesRow()
           if colRows[1]:
               
               if self.REQUEST.SESSION.has_key("filename"):
                   filename=self.REQUEST.SESSION["filename"]
                   try:
                       nr=ids.index(filename)+colRows[0]*colRows[1]
                       if nr>=len(ids):
                           nr=len(ids)-1
                   except:
                       nr=0
               else:
                   nr=0
   
               if nr==len(ids)-1:
                   return ""
               else:
                   if selected:
                       return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
                   else:
                       return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">next set</a>"
   
       def prevSets(self,selected=None):
           
           """show nextimage"""
           #return self.getId()
           ids=self.show_thumbs()
           colRows=self.getColTimesRow()
           if colRows[1]:
               if self.REQUEST.SESSION.has_key("filename"):
                   filename=self.REQUEST.SESSION["filename"]
                   try:
                       nr=ids.index(filename)-colRows[0]*colRows[1]
                       if nr<0:
                           nr=0
                   except:
                       nr=0
               else:
                   nr=0
               try:
                   num=ids.index(filename)
               except:
                   num=0
               
               if num==0:
                   return ""
               else:
                   if selected:
                       return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
                   else:
                       return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr]+"\" target=\"_top\">previous sets</a>"
           else:
               return ""
               
     def show_thumbs_selected_rows(self,numberOfColumns):      def show_thumbs_selected_rows(self,numberOfColumns):
         """Ausgabe anzahl"""          """Ausgabe anzahl"""
         ids=self.show_selected_thumbs()          ids=self.show_selected_thumbs()
Line 270  class ImageCollection(Folder, Persistent Line 489  class ImageCollection(Folder, Persistent
         self.REQUEST.SESSION['number']=range(number)          self.REQUEST.SESSION['number']=range(number)
         return range(number+1)          return range(number+1)
   
     def show_thumbs_rows(self,numberOfColumns):      def setColTimesRowForm(self):
           """form for matrix setting"""
           pt=PageTemplateFile('Products/ImageArchive/selectColTimesRow.zpt').__of__(self)
           return pt()
   
       def setDone(self):
           """done"""
           
           pt=PageTemplateFile('Products/ImageArchive/changedColTimesRow.zpt').__of__(self)
           return pt()
   
       def setColTimesRow(self,cols,rows):
           """set coltimes row"""
           RESPONSE=self.REQUEST.RESPONSE
           if not rows:
               rows=None
           if rows=="":
               rows=None
   
           if rows:
               RESPONSE.setCookie("ImageViewerRows",rows)
           RESPONSE.setCookie("ImageViewerCols",cols)
   
           RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
           
       def getColTimesRow(self):
           """coltimesrow"""
           
           REQUEST=self.REQUEST
           """matrix"""
           if REQUEST.cookies.has_key("ImageViewerRows"):
               
               try:
                   rows=int(REQUEST.cookies["ImageViewerRows"])
               except:
                   rows=None
           else:
               rows=None
               
           if REQUEST.cookies.has_key("ImageViewerCols"):
               #print "COLS",REQUEST.cookies["ImageViewerCols"]
               cols=int(REQUEST.cookies["ImageViewerCols"])
           else:
               cols=4
   
           idsnumber=len(self.show_thumbs())
           if rows:
               if cols*rows >idsnumber:
                   rows=int(idsnumber/cols)+1
           return (cols,rows)
                   
           
       def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
         """Ausgabe anzahl"""          """Ausgabe anzahl"""
         ids=self.show_thumbs()  
           idsAll=self.show_thumbs()
           
           if self.REQUEST.SESSION.has_key("filename"):
               filename=self.REQUEST.SESSION["filename"]
               try:
                   startId=filename
               except:
                   startId=idsAll[0]
           else:
               startId=idsAll[0]
               
   
           print "NOR:",numberOfRows
   
           if numberOfRows:
               try:
                   startPic=idsAll.index(startId)
                   endPic=startPic+numberOfColumns*numberOfRows
                   ids=idsAll[startPic:endPic]
               except:
                   ids=idsAll
           else:
               ids=idsAll
   
               
         self.REQUEST.SESSION['ids']=ids          self.REQUEST.SESSION['ids']=ids
         number=int(len(ids)/numberOfColumns)+1          number=int(len(ids)/numberOfColumns)+1
                   
Line 286  class ImageCollection(Folder, Persistent Line 582  class ImageCollection(Folder, Persistent
             return ids[(row-1)*numberOfColumns:row*numberOfColumns]              return ids[(row-1)*numberOfColumns:row*numberOfColumns]
         else:          else:
             return ids[(row-1)*numberOfColumns:]              return ids[(row-1)*numberOfColumns:]
           
     def thumblistSelected_old(self):      def thumblistSelected_old(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)
Line 306  class ImageCollection(Folder, Persistent Line 603  class ImageCollection(Folder, Persistent
         pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)
         return pt()          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):      def navig_html(self):
         """navigation"""          """navigation"""
           #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
         pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
         return pt()          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):      def index_html(self):
         """main template collection"""          """main template collection"""
         if self.REQUEST.has_key('filename'):          if self.REQUEST.has_key('filename'):

Removed from v.1.3  
changed lines
  Added in v.1.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>