Diff for /ImageArchive/ImageArchive.py between versions 1.27 and 1.36

version 1.27, 2004/08/03 13:44:18 version 1.36, 2004/11/17 15:38:23
Line 1 Line 1
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
 from Globals import Persistent  from Globals import Persistent,package_home
 from Acquisition import Implicit  from Acquisition import Implicit
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
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):
       str2=str.replace("\\","/")
       return os.path.split(str2)[1]
   
 def getText(nodelist):  def getText(nodelist):
           
Line 52  class ImageDigilib(Folder,Persistent,Imp Line 58  class ImageDigilib(Folder,Persistent,Imp
   
     def addMetaObjectForm(self):      def addMetaObjectForm(self):
         """Add Form"""          """Add Form"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/addMetaObject.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMetaObject.zpt')).__of__(self)
         return pt()                  return pt()        
   
   
Line 69  class ImageDigilib(Folder,Persistent,Imp Line 75  class ImageDigilib(Folder,Persistent,Imp
     def uploadImage(self,fileupload,path_name):      def uploadImage(self,fileupload,path_name):
         """upload an Image from an Requast"""          """upload an Image from an Requast"""
         #path_name=self.ImageStoragePath          #path_name=self.ImageStoragePath
         filename=path_name+"/"+fileupload.filename          fn=splitPath(fileupload.filename)
           filename=path_name+"/"+fn
         filedata=fileupload.read()          filedata=fileupload.read()
         f=open(filename,"w")          f=open(filename,"w")
         f.write(filedata)          f.write(filedata)
Line 78  class ImageDigilib(Folder,Persistent,Imp Line 85  class ImageDigilib(Folder,Persistent,Imp
             os.chmod(filename,0644)              os.chmod(filename,0644)
         except:          except:
             """hack"""              """hack"""
       #scale thumb
       
           self.scaleThumbs()
   
         os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)      #scale standard
   
       self.scaleWorkingVersions()
           
   
           
       def downloadWorkingVersion(self):
           """download working version (2000 pixel)"""
                   
     def download(self):          return self.download(fmt="&dw=2000&dh=2000",suffix=".jpg")
       
       def download(self,fmt="&mo=rawfile,hires",suffix=None):
         """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+"/"+os.path.splitext(self.filename)[0]+fmt
         #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path      
         #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)      if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(self.filename):
         return self.REQUEST.RESPONSE.redirect(path)          filename=self.REQUEST.SESSION['filenamesIds'][self.filename][0]+"_"+self.filename
       else:
           filename=self.filename
   
       if suffix:
           filename=os.path.splitext(filename)[0]+suffix
           
       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 updateImageForm(self):
           """form"""
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','upDateImageForm.zpt')).__of__(self)
           return pt()        
   
       def updateImage(self,file,RESPONSE):
           """lade neues Version des Bildes"""
           #teste ob Dokumenten ordner schon vorhanden
           imagePath=os.path.join(self.ImageStoragePath,self.getId())
           path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir")
           print "path",path
           if not os.path.exists(path):
               os.mkdir(path,0775)
               os.chmod(path,0775)
               
           versionNumber=getattr(self,'versionNumber',0)+1
   
           #teste ob version schon existiert
   
           while os.path.exists(os.path.join(path,"V%i_%s"%(versionNumber,self.getId()))):
               versionNumber+=1
   
           #kopieren der bestehenden Version in den Versions ordner.
           imageNewPath=os.path.join(path,"V%i_%s"%(versionNumber,self.getId()))
           os.rename(imagePath,imageNewPath)
   
           #lesen des upload files und schreiben
           filedata=file.read()
           f=open(imagePath,"w")
           f.write(filedata)
           f.close()
           try:
               os.chmod(imagePath,0664)
           except:
               """hack"""
           #scale thumb
       
           self.scaleThumbs()
           
           #scale standard
   
           self.scaleWorkingVersions()
   
           if RESPONSE:
               RESPONSE.redirect(self.absolute_url())
       
           return "done"
           
     def thumb(self):      def thumb(self):
         """show thumb"""          """show thumb"""
Line 104  class ImageDigilib(Folder,Persistent,Imp Line 179  class ImageDigilib(Folder,Persistent,Imp
                           
         #DEVEL:take nausikaa for server solution          #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+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores"
         #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname          #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
         self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path          self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumb.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','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          #DEVELOP: take first one for server
                   
         path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+self.filename          path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]
   
         #path="http://localhost:8080/mpiwg/online/"+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)
   
           
 def manage_AddImageDigilibForm(self):  def manage_AddImageDigilibForm(self):
     """Nothing yet"""      """Nothing yet"""
     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageDigilibForm.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageDigilibForm.zpt')).__of__(self)
     return pt()      return pt()
           
 def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):  def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None):
     """Add ImageCollection"""      """Add ImageCollection"""
     #fileupload=self.REQUEST['fileupload']      #fileupload=self.REQUEST['fileupload']
     newObj=ImageDigilib(id,fileupload.filename,meta)      fn=splitPath(fileupload.filename)
       newObj=ImageDigilib(id,fn,meta)
           
     self._setObject(id,newObj)      self._setObject(id,newObj)
     getattr(self,id).uploadImage(fileupload,self.ImageStoragePath)      getattr(self,id).uploadImage(fileupload,self.ImageStoragePath)
Line 150  class ImageCollection(Folder, Persistent Line 226  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,local=None,version="working"):
           """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']:
   
               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]
   
               if RESPONSE:
                   RESPONSE.write(str("<p>Get File: %s<br>\n"%filename))
   
               if local:
                   if version=="working":
                       sourcePath="/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+id[0]
                   else:
                       sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+id[0]
                   targetPath=tmpPath+"/"+filename
                   try:
                       shutil.copyfile(sourcePath,targetPath)
                   except:
                       if RESPONSE:
                           RESPONSE.write(str("<p>Error in File: %s (possible missing)<br>\n"%filename))
                       else:
                           """nothing"""
               else:
                   if version=="working":
                       path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&dh=2000&dw=2000"
                   else:
                       path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires"
                   image=urllib.urlopen(path).read()
               
               
                   fh=file(tmpPath+"/"+filename,"w")
   
               
                   fh.write(image)
                   fh.close()
   
               #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
                       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]
   
                       if RESPONSE:
                           RESPONSE.write(str("<p>Get File: %s<br>\n"%filename))
   
                       if local:
                           sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+ids[nr+1]
                           targetPath=tmpPath+"/"+filename
                           try:
                               shutil.copyfile(sourcePath,targetPath)
                           except:
                               if RESPONSE:
                                   RESPONSE.write(str("<p>Error in File: %s (missing?)<br>\n"%filename))
                               else:
                                   """nothing"""
                       else:
                           path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires"
   
                           image=urllib.urlopen(path).read()
                       
   
                           fh=file(tmpPath+"/"+filename,"w")
                           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)      
       #scale thumbs
           ret=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)
       if RESPONSE:
           RESPONSE.write(ret.read())
           RESPONSE.write("\n")
           
         return "RESCALING STARTED"          return "RESCALING STARTED"
           
       def scaleWorkingVersions(self,RESPONSE=None):
           """scale working versions"""
       
       #scale standard
   
       ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/small -scaleto=2000 &"% self.ImageViewerPath)
       if RESPONSE:
           RESPONSE.write(ret.read())
           RESPONSE.write("\n")
       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 168  class ImageCollection(Folder, Persistent Line 411  class ImageCollection(Folder, Persistent
         {'label':'Recalculate Metadata','action':'recalculateMeta'},          {'label':'Recalculate Metadata','action':'recalculateMeta'},
         {'label':'Import Metadata','action':'importMetaForm'},          {'label':'Import Metadata','action':'importMetaForm'},
         {'label':'Rescale thumbs','action':'scaleThumbs'},          {'label':'Rescale thumbs','action':'scaleThumbs'},
       {'label':'Rescale working version','action':'scaleWorkingVersions'},
         {'label':'Weight (ECHO)','action':'weightForm'},          {'label':'Weight (ECHO)','action':'weightForm'},
         )          )
   
     def weightForm(self):      def weightForm(self):
         """Weight"""          """Weight"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/changeWeight.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeWeight.zpt')).__of__(self)
         return pt()          return pt()
   
     def changeWeight(self,weight,RESPONSE=None):      def changeWeight(self,weight,RESPONSE=None):
Line 186  class ImageCollection(Folder, Persistent Line 430  class ImageCollection(Folder, Persistent
                   
     def importMetaForm(self):      def importMetaForm(self):
         """import metadata"""          """import metadata"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','importMeta.zpt')).__of__(self)
         return pt()          return pt()
   
     def importMeta(self,fileupload,tag):      def importMeta(self,fileupload,tag):
Line 223  class ImageCollection(Folder, Persistent Line 467  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 231  class ImageCollection(Folder, Persistent Line 475  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 239  class ImageCollection(Folder, Persistent Line 484  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 294  class ImageCollection(Folder, Persistent Line 542  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]
           nopT=getText(numberOfPages.childNodes)
           try:
               nop=int(nopT)
           except:
               nop=0
             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
         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)      self.REQUEST.SESSION['filenamesIds']=fnIds
       
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected.zpt')).__of__(self)
         return pt()                  return pt()        
   
     def recalculateMeta(self):      def recalculateMeta(self):
Line 320  class ImageCollection(Folder, Persistent Line 584  class ImageCollection(Folder, Persistent
           
     def addImage(self):      def addImage(self):
         """Add an Image"""          """Add an Image"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/addImage.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImage.zpt')).__of__(self)
         return pt()          return pt()
           
     def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):      def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
Line 334  class ImageCollection(Folder, Persistent Line 598  class ImageCollection(Folder, Persistent
                 meta=None                  meta=None
         else:          else:
             meta=None              meta=None
           fn=splitPath(fileupload.filename)
                                   
         manage_AddImageDigilib(self,fileupload.filename,fileupload,meta=meta)          manage_AddImageDigilib(self,fn,fileupload,meta=meta)
         return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)          return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn)
         #return  self.REQUEST['URL1']+'/'+fileupload.filename          #return  self.REQUEST['URL1']+'/'+fileupload.filename
   
     def ImportFiles2(self,RESPONSE=None):      def ImportFiles2(self,RESPONSE=None):
Line 357  class ImageCollection(Folder, Persistent Line 622  class ImageCollection(Folder, Persistent
                     #print newObj                      #print newObj
                     self._setObject(file,newObj)                      self._setObject(file,newObj)
         #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)  
       #scale thumb
       
           self.scaleThumbs()
   
       #scale standard
   
       self.scaleWorkingVersions()
       
   
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
           
     def ImportFiles(self,RESPONSE=None):      def ImportFiles(self,RESPONSE=None):
Line 382  class ImageCollection(Folder, Persistent Line 656  class ImageCollection(Folder, Persistent
                     except:                      except:
                         """nothing yet"""                          """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)  
           #scale thumb
       
           self.scaleThumbs()
   
       #scale standard
   
       self.scaleWorkingVersions()
       
       if RESPONSE:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
                   
     def ImageCollection_config(self):      def ImageCollection_config(self):
Line 392  class ImageCollection(Folder, Persistent Line 675  class ImageCollection(Folder, Persistent
         if not hasattr(self,'defaultMetaString'):          if not hasattr(self,'defaultMetaString'):
             self.defaultMetaString=""              self.defaultMetaString=""
                           
         pt=PageTemplateFile('Products/ImageArchive/zpt/ChangeImageCollectionForm.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeImageCollectionForm.zpt')).__of__(self)
         return pt()          return pt()
   
     def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):      def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
Line 511  class ImageCollection(Folder, Persistent Line 794  class ImageCollection(Folder, Persistent
     def showRuler(self,selected=None):      def showRuler(self,selected=None):
         """show ruler"""          """show ruler"""
         showall =self.REQUEST.SESSION.get('showall','no')          showall =self.REQUEST.SESSION.get('showall','no')
           ids=self.show_thumbs()
           if len(ids)==0:
               return "<b>No entries</b>"
           
         if showall=='no':          if showall=='no':
             ids=self.show_thumbs()              ids=self.show_thumbs()
             colRows=self.getColTimesRow()              colRows=self.getColTimesRow()
             num=int(len(ids)/(colRows[0]*colRows[1]))              num=int(len(ids)/(colRows[0]*colRows[1]))
               if not (operator.mod(len(ids),colRows[0]*colRows[1])==0):
                   num+=1
             a=colRows[0]*colRows[1]              a=colRows[0]*colRows[1]
             #print num,num+1              #print num,num+1
             if num+1>1:              if num>1:
   
                 ret="<b>Show thumbnail group no:</b></br>"                  ret="<b>Show thumbnail group no:</b></br>"
                 for i in range(num+1):                  for i in range(num):
                     if (operator.mod(i,10)==0) and i>0:                      if (operator.mod(i,10)==0) and i>0:
                         ret +="<br/>" #alle 10 linebreak einfuegen                          ret +="<br/>" #alle 10 linebreak einfuegen
                     k=i*a                      k=i*a
                     if selected:                                      if selected:                
                         href=self.REQUEST['URL1']+"/selection?filename="+ids[k]                          href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
                     else:                      else:
                         href=self.REQUEST['URL1']+"?filename="+ids[k]                          href=self.REQUEST['URL1']+"?filename="+ids[int(k)]
   
                     ret+="""<a href="%s" target="_top">%i</a>&nbsp;&nbsp;"""%(href,i)                      ret+="""<a href="%s" target="_top">%i</a>&nbsp;&nbsp;"""%(href,i)
   
Line 549  class ImageCollection(Folder, Persistent Line 838  class ImageCollection(Folder, Persistent
   
     def setColTimesRowForm(self):      def setColTimesRowForm(self):
         """form for matrix setting"""          """form for matrix setting"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','selectColTimesRow.zpt')).__of__(self)
         return pt()          return pt()
   
     def setDone(self):      def setDone(self):
         """done"""          """done"""
                   
         pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changedColTimesRow.zpt')).__of__(self)
         return pt()          return pt()
   
     def setColTimesRow(self,cols,rows):      def setColTimesRow(self,cols,rows):
Line 608  class ImageCollection(Folder, Persistent Line 897  class ImageCollection(Folder, Persistent
         """Ausgabe anzahl"""          """Ausgabe anzahl"""
   
         idsAll=self.show_thumbs()          idsAll=self.show_thumbs()
                   if len(idsAll)==0: #keine Einträge
               return 0
         if self.REQUEST.SESSION.has_key("filename"):          if self.REQUEST.SESSION.has_key("filename"):
             filename=self.REQUEST.SESSION["filename"]              filename=self.REQUEST.SESSION["filename"]
                           
Line 656  class ImageCollection(Folder, Persistent Line 946  class ImageCollection(Folder, Persistent
                   
     def thumblistSelected_old(self):      def thumblistSelected_old(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbselected.zpt')).__of__(self)
         return pt()          return pt()
   
     def thumblistSelected(self):      def thumblistSelected(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbselected2.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbselected2.zpt')).__of__(self)
         return pt()          return pt()
           
     def thumblist_old(self):      def thumblist_old(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbs.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbs.zpt')).__of__(self)
         return pt()          return pt()
   
     def thumblist(self):      def thumblist(self):
         """main template collection"""          """main template collection"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumb2.zpt')).__of__(self)
         return pt()          return pt()
   
     def thumblistNewWindow(self):      def thumblistNewWindow(self):
         """Thumbs mit clik neues Fenster oeffnen"""          """Thumbs mit clik neues Fenster oeffnen"""
         pt=PageTemplateFile('Products/ImageArchive/zpt/thumbNewWindow.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumbNewWindow.zpt')).__of__(self)
         return pt()          return pt()
                   
   
     def navig_selected_html(self):      def navig_selected_html(self):
         """navigation"""          """navigation"""
         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']          #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation_selected.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','navigation_selected.zpt')).__of__(self)
         return pt()          return pt()
   
     def navig_html(self):      def navig_html(self):
         """navigation"""          """navigation"""
         #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']          #self.REQUEST.SESSION['URL']=self.REQUEST['URL0']
         pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','navigation.zpt')).__of__(self)
         return pt()          return pt()
   
   
Line 700  class ImageCollection(Folder, Persistent Line 990  class ImageCollection(Folder, Persistent
         else:          else:
             filen=""              filen=""
         self.REQUEST.SESSION['filename']=filen          self.REQUEST.SESSION['filename']=filen
         pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected2.zpt')).__of__(self)
         return pt()            return pt()  
                   
     def index_html(self):      def index_html(self):
Line 719  class ImageCollection(Folder, Persistent Line 1009  class ImageCollection(Folder, Persistent
             self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')              self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
                           
                   
         pt=PageTemplateFile('Products/ImageArchive/zpt/overview.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview.zpt')).__of__(self)
         return pt()          return pt()
           
 def manage_AddImageCollectionForm(self):  def manage_AddImageCollectionForm(self):
     """Nothing yet"""      """Nothing yet"""
     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionForm.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageCollectionForm.zpt')).__of__(self)
     return pt()      return pt()
           
 def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):  def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
Line 764  class ImageCollectionIFrame(ImageCollect Line 1054  class ImageCollectionIFrame(ImageCollect
         self.REQUEST.SESSION['filename']=filen          self.REQUEST.SESSION['filename']=filen
                   
           
         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','IFrameMain.zpt')).__of__(self)
         return pt()          return pt()
   
     def iframe_html(self):      def iframe_html(self):
Line 774  class ImageCollectionIFrame(ImageCollect Line 1064  class ImageCollectionIFrame(ImageCollect
         else:          else:
             filen=""              filen=""
         self.REQUEST.response.setCookie('filename',filen)          self.REQUEST.response.setCookie('filename',filen)
         pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','IFrameOverview.zpt')).__of__(self)
         return pt()          return pt()
   
   
 def manage_AddImageCollectionIFrameForm(self):  def manage_AddImageCollectionIFrameForm(self):
     """Nothing yet"""      """Nothing yet"""
     pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageCollectionIFrameForm.zpt')).__of__(self)
     return pt()      return pt()
           
 def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):  def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):

Removed from v.1.27  
changed lines
  Added in v.1.36


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