Diff for /ImageArchive/ImageArchive.py between versions 1.30 and 1.31

version 1.30, 2004/10/13 14:07:19 version 1.31, 2004/11/11 19:12:39
Line 10  import os.path Line 10  import os.path
 import urllib  import urllib
 import xml.dom.minidom  import xml.dom.minidom
 import operator  import operator
   import tempfile
   import shutil
   
 def splitPath(str):  def splitPath(str):
     str2=str.replace("\\","/")      str2=str.replace("\\","/")
Line 89  class ImageDigilib(Folder,Persistent,Imp Line 91  class ImageDigilib(Folder,Persistent,Imp
           
   
           
           
     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,hires"          path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=rawfile,hires"
         #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path      if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(self.filename):
         #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)          filename=self.REQUEST.SESSION['filenamesIds'][self.filename][0]+"_"+self.filename
         return self.REQUEST.RESPONSE.redirect(path)      else:
           filename=self.filename
           
       self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%filename)
       self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
       image=urllib.urlopen(path).read()
       self.REQUEST.RESPONSE.write(image)
       self.REQUEST.RESPONSE.close()
           #return self.REQUEST.RESPONSE.redirect(path)
           
     def thumb(self):      def thumb(self):
         """show thumb"""          """show thumb"""
Line 156  class ImageCollection(Folder, Persistent Line 165  class ImageCollection(Folder, Persistent
           
     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):  
    
       def createSet(self,RESPONSE=None):
           """download aller gewaehlten files"""
           tempfile.tempdir="/tmp/archivesImageServer"
           
           tmpPath=tempfile.mktemp()
           
   
           tmpZip=tempfile.mktemp()+".zip"
           tmpFn=os.path.split(tmpZip)[1]
   
   
           if not os.path.exists(tempfile.tempdir):
               os.mkdir(tempfile.tempdir) 
   
           if not os.path.exists(tmpPath):
               os.mkdir(tmpPath) 
           
           
           if RESPONSE:
               RESPONSE.setHeader("Content-Type","text/html")
               RESPONSE.write("<h1>I am creating  the download archive</h1>")
               RESPONSE.write("<h3>1. step: getting the images</h3>")
   
           if not self.REQUEST.SESSION.has_key('filenames'):
               RESPONSE.write("<h2>ERROR</h2>")
               RESPONSE.write("<p>I forgot, the selected files. Please reselect.\n")
               return 0
           
           for id in self.REQUEST.SESSION['filenames']:
               path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+urllib.quote(id[0])+"&mo=rawfile,hires"
   
               image=urllib.urlopen(path).read()
               if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(id[0]):
                   filename=self.REQUEST.SESSION['filenamesIds'][id[0]][0]+"_"+id[0]
               else:
                   filename=id[0]
   
               
                   
               fh=file(tmpPath+"/"+filename,"w")
               if RESPONSE:
                   RESPONSE.write(str("<p>Get File: %s<br>\n"%filename))
   
               fh.write(image)
   
               #folgeseiten
               if int(self.REQUEST.SESSION['filenamesIds'][id[0]][1])>1: 
                   ids=self.show_thumbs()
                   nr=ids.index(id[0])
                   
                   numberOfPages=self.REQUEST.SESSION['filenamesIds'][id[0]][1]
                   for k in range(int(numberOfPages)-1):
                       i=k+1
   
                       path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"&/"+ids[nr+i]+"&mo=rawfile,hires"
   
                       image=urllib.urlopen(path).read()
                       if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(id[0]):
                           filename=self.REQUEST.SESSION['filenamesIds'][id[0]][0]+"_"+ids[nr+i]
                       else:
                           filename=id[0]
   
   
   
                       fh=file(tmpPath+"/"+filename,"w")
                       if RESPONSE:
                           RESPONSE.write(str("<p>Get File: %s<br>\n"%filename))
   
                       fh.write(image)
   
   
               fh.close()
   
           if RESPONSE:
               RESPONSE.write("<h3>2. step: creating the downloadable file</h3>")
               RESPONSE.write("<p>Create Zip<br>")
               RESPONSE.write("<p>This can take a while....<br>\n")
           if RESPONSE:
               fh=os.popen2("zip -u %s %s/*"%(tmpZip,tmpPath),1)[1]
               RESPONSE.write("<br>")
               for c in fh.read():
                   RESPONSE.write(c)
   
                   if c==")":
                       RESPONSE.write("<br>\n")
               
                   
           else:
               os.popen("zip -u %s %s/*"%(tmpZip,tmpPath))
   
           
           shutil.rmtree(tmpPath)
   
           if RESPONSE:
               RESPONSE.write("<p>finished<br>\n")
   
           if RESPONSE:
               len=os.stat(tmpZip)[6]
               downloadUrl=self.absolute_url()+"/downloadSet"
               RESPONSE.write("""<h1><a href="downloadSet?fn=%s">Click here for download ( %i Byte)</a></h1>\n"""%(tmpFn,len))
               RESPONSE.write("""<p>The file will be stored for a while, you can download it later, the URL is:</p>
               <p><a href="downloadSet?fn=%s">%s?fn=%s</a></h1>\n"""%(tmpFn,downloadUrl,tmpFn))
               RESPONSE.close()
           
       def downloadSet(self,fn):
           """download prepared set"""
           filename="/tmp/archivesImageServer/"+fn
           
           self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%"image.zip")
           self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
           len=os.stat(filename)[6]
           self.REQUEST.RESPONSE.setHeader("Content-Length",len)
           images=file(filename).read()
           self.REQUEST.RESPONSE.write(images)
           self.REQUEST.RESPONSE.close()
   
               
               
       def scaleThumbs(self,RESPONSE=None):
         """scale thumbs"""          """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)      
       
           os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath) 
         return "RESCALING STARTED"          return "RESCALING STARTED"
           
     def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):      def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
Line 229  class ImageCollection(Folder, Persistent Line 360  class ImageCollection(Folder, Persistent
         return "OK"          return "OK"
           
   
     def nextImage(self,request,selected=None):      def nextImage(self,request,selected=None,returnFn=None):
         """show nextimage"""          """show nextimage"""
         try:          try:
             ids=self.show_thumbs()              ids=self.show_thumbs()
Line 237  class ImageCollection(Folder, Persistent Line 368  class ImageCollection(Folder, Persistent
                 filename=request.SESSION["filename"]                  filename=request.SESSION["filename"]
                 try:                  try:
                     nr=ids.index(filename)                      nr=ids.index(filename)
             
                 except:                  except:
                     nr=0                      nr=0
             else:              else:
Line 245  class ImageCollection(Folder, Persistent Line 377  class ImageCollection(Folder, Persistent
             if nr==len(ids)-1:              if nr==len(ids)-1:
                 return ""                  return ""
             else:              else:
               if returnFn:
                   return ids[nr+1]
               
                 if selected:                  if selected:
                     return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"                      return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
                 else:                  else:
Line 300  class ImageCollection(Folder, Persistent Line 435  class ImageCollection(Folder, Persistent
         url=urllib.unquote(url)          url=urllib.unquote(url)
         xmldoc=urllib.urlopen(url).read()          xmldoc=urllib.urlopen(url).read()
         #print url          #print url
       try:
         dom=xml.dom.minidom.parseString(xmldoc)          dom=xml.dom.minidom.parseString(xmldoc)
           except:
           return xmldoc
       images=dom.getElementsByTagName('image')
                   
         images=dom.getElementsByTagName('imagename')  
         rc=[]          rc=[]
       fnIds={}
         for image in images:          for image in images:
             text=getText(image.childNodes)          imagename=image.getElementsByTagName('imagename')[0]
           text=getText(imagename.childNodes)
           idnr=image.getElementsByTagName('idnr')[0]
           id=getText(idnr.childNodes)
           numberOfPages=image.getElementsByTagName('numberOfPages')[0]
           nop=getText(numberOfPages.childNodes)
           
             if not text=="":              if not text=="":
                 rc.append(str(text))              rc.append((str(text),id,nop))
               fnIds[str(text)]=(id,nop)
         rc.sort()          rc.sort()
         self.REQUEST.SESSION['filenames']=rc          self.REQUEST.SESSION['filenames']=rc
       self.REQUEST.SESSION['filenamesIds']=fnIds
       
         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)
         return pt()                  return pt()        
   
Line 366  class ImageCollection(Folder, Persistent Line 514  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 -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath) 
   
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
           
     def ImportFiles(self,RESPONSE=None):      def ImportFiles(self,RESPONSE=None):

Removed from v.1.30  
changed lines
  Added in v.1.31


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