Diff for /ImageArchive/ImageArchive.py between versions 1.11 and 1.32

version 1.11, 2004/01/06 16:16:42 version 1.32, 2004/11/11 19:46:37
Line 9  import os Line 9  import os
 import os.path  import os.path
 import urllib  import urllib
 import xml.dom.minidom  import xml.dom.minidom
   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 38  class ImageDigilib(Folder,Persistent,Imp Line 45  class ImageDigilib(Folder,Persistent,Imp
   
         request=self.REQUEST          request=self.REQUEST
         objectCreate=objectType.createObjectManager(id,request)          objectCreate=objectType.createObjectManager(id,request)
         #for field in self.leiden_meta_fields:  
         #    self.REQUEST[field]=argv[field]  
         self._setObject(id,objectCreate)          self._setObject(id,objectCreate)
                   
         objectCreate.propertysheets.meta.manage_editProperties(request)          objectCreate.propertysheets.meta.manage_editProperties(request)
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/addMetaObject.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/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)
         f.close()          f.close()
           try:
         os.chmod(filename,0644)          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)          except:
               """hack"""
   
           os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
           
   
           
                   
     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,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 102  class ImageDigilib(Folder,Persistent,Imp Line 120  class ImageDigilib(Folder,Persistent,Imp
                   
         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="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname          #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname
         self.REQUEST.SESSION['string']="<img width=100 border=\"0\" src=\"%s\">"% path          self.REQUEST.SESSION['string']="<img border=\"0\" src=\"%s\">"% path
         pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/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://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename          path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+self.filename
   
         #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
Line 120  class ImageDigilib(Folder,Persistent,Imp Line 138  class ImageDigilib(Folder,Persistent,Imp
           
 def manage_AddImageDigilibForm(self):  def manage_AddImageDigilibForm(self):
     """Nothing yet"""      """Nothing yet"""
     pt=PageTemplateFile('Products/ImageArchive/AddImageDigilibForm.zpt').__of__(self)      pt=PageTemplateFile('Products/ImageArchive/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 146  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 164  class ImageCollection(Folder, Persistent Line 305  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':'Weight (ECHO)','action':'weightForm'},
         )          )
   
       def weightForm(self):
           """Weight"""
           pt=PageTemplateFile('Products/ImageArchive/zpt/changeWeight.zpt').__of__(self)
           return pt()
   
       def changeWeight(self,weight,RESPONSE=None):
           """Change weight"""
           self.weight=weight
           
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
   
     def importMetaForm(self):      def importMetaForm(self):
         """import metadata"""          """import metadata"""
         pt=PageTemplateFile('Products/ImageArchive/importMeta.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/zpt/importMeta.zpt').__of__(self)
         return pt()          return pt()
   
     def importMeta(self,fileupload,tag):      def importMeta(self,fileupload,tag):
Line 206  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:
         ids=self.show_thumbs()          ids=self.show_thumbs()
         if request.SESSION.has_key("filename"):          if request.SESSION.has_key("filename"):
             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 221  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:
                 return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"                  return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr+1]+"\" target=\"_top\">next image</a>"
           except:
               return ""
                           
     def prevImage(self,request,selected=None):      def prevImage(self,request,selected=None):
         """show nextimage"""          """show nextimage"""
         #return self.getId()          #return self.getId()
           try:
         ids=self.show_thumbs()          ids=self.show_thumbs()
         if request.SESSION.has_key("filename"):          if request.SESSION.has_key("filename"):
             filename=request.SESSION["filename"]              filename=request.SESSION["filename"]
Line 246  class ImageCollection(Folder, Persistent Line 408  class ImageCollection(Folder, Persistent
                 return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"                  return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
             else:              else:
                 return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"                  return "<a href=\""+self.REQUEST['URL1']+"?filename="+ids[nr-1]+"\" target=\"_top\">previous image</a>"
           except:
               return ""
                   
     def meta_default(self,filename):      def meta_default(self,filename):
         """url der metadaten"""          """url der metadaten"""
Line 271  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]
           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/overview_selected.zpt').__of__(self)      self.REQUEST.SESSION['filenamesIds']=fnIds
       
           pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected.zpt').__of__(self)
         return pt()                  return pt()        
   
     def recalculateMeta(self):      def recalculateMeta(self):
Line 297  class ImageCollection(Folder, Persistent Line 477  class ImageCollection(Folder, Persistent
           
     def addImage(self):      def addImage(self):
         """Add an Image"""          """Add an Image"""
         pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/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 311  class ImageCollection(Folder, Persistent Line 491  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 336  class ImageCollection(Folder, Persistent Line 517  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.ImageStoragePath)      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):
Line 361  class ImageCollection(Folder, Persistent Line 543  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.ImageStoragePath)          os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 100 &"% self.ImageViewerPath)
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
                   
     def ImageCollection_config(self):      def ImageCollection_config(self):
Line 369  class ImageCollection(Folder, Persistent Line 551  class ImageCollection(Folder, Persistent
         if not hasattr(self,'defaultMetaString'):          if not hasattr(self,'defaultMetaString'):
             self.defaultMetaString=""              self.defaultMetaString=""
                           
         pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/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 400  class ImageCollection(Folder, Persistent Line 582  class ImageCollection(Folder, Persistent
   
     def firstSets(self,selected=None):      def firstSets(self,selected=None):
         ids=self.show_thumbs()          ids=self.show_thumbs()
           if ids:
         if selected:          if selected:
             return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[0]+"\" target=\"_top\">first sets</a>"              return "<a href=\""+self.REQUEST['URL1']+"/selection?filename="+ids[0]+"\" target=\"_top\">first sets</a>"
         else:          else:
Line 407  class ImageCollection(Folder, Persistent Line 590  class ImageCollection(Folder, Persistent
   
     def lastSets(self,selected=None):      def lastSets(self,selected=None):
         ids=self.show_thumbs()          ids=self.show_thumbs()
           if ids:
         colRows=self.getColTimesRow()          colRows=self.getColTimesRow()
                   
         if colRows[1]:          if colRows[1]:
Line 428  class ImageCollection(Folder, Persistent Line 612  class ImageCollection(Folder, Persistent
         """show nextimage"""          """show nextimage"""
         ids=self.show_thumbs()          ids=self.show_thumbs()
         colRows=self.getColTimesRow()          colRows=self.getColTimesRow()
           if ids:
         if colRows[1]:          if colRows[1]:
                           
             if self.REQUEST.SESSION.has_key("filename"):              if self.REQUEST.SESSION.has_key("filename"):
Line 455  class ImageCollection(Folder, Persistent Line 640  class ImageCollection(Folder, Persistent
         #return self.getId()          #return self.getId()
         ids=self.show_thumbs()          ids=self.show_thumbs()
         colRows=self.getColTimesRow()          colRows=self.getColTimesRow()
           if ids:
         if colRows[1]:          if colRows[1]:
             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 466  class ImageCollection(Folder, Persistent Line 652  class ImageCollection(Folder, Persistent
                     nr=0                      nr=0
             else:              else:
                 nr=0                  nr=0
                   try:
                       num=ids.index(filename)
                   except:
                       num=0
   
             if ids.index(filename)==0:                  if num==0:
                 return ""                  return ""
             else:              else:
                 if selected:                  if selected:
Line 477  class ImageCollection(Folder, Persistent Line 667  class ImageCollection(Folder, Persistent
         else:          else:
             return ""              return ""
                           
       def showRuler(self,selected=None):
           """show ruler"""
           showall =self.REQUEST.SESSION.get('showall','no')
           ids=self.show_thumbs()
           if len(ids)==0:
               return "<b>No entries</b>"
           
           if showall=='no':
               ids=self.show_thumbs()
               colRows=self.getColTimesRow()
               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]
               #print num,num+1
               if num>1:
   
                   ret="<b>Show thumbnail group no:</b></br>"
                   for i in range(num):
                       if (operator.mod(i,10)==0) and i>0:
                           ret +="<br/>" #alle 10 linebreak einfuegen
                       k=i*a
                       if selected:                
                           href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
                       else:
                           href=self.REQUEST['URL1']+"?filename="+ids[int(k)]
   
                       ret+="""<a href="%s" target="_top">%i</a>&nbsp;&nbsp;"""%(href,i)
   
               else:
                   ret=""
               ret+="""<a href="%s?showall=yes" target="_top">show all</a> """%self.REQUEST['URL1']
           else:
               ret="""<a href="%s?showall=no" target="_top">show groups</a> """%self.REQUEST['URL1']
   
           return ret
       
     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 487  class ImageCollection(Folder, Persistent Line 714  class ImageCollection(Folder, Persistent
   
     def setColTimesRowForm(self):      def setColTimesRowForm(self):
         """form for matrix setting"""          """form for matrix setting"""
         pt=PageTemplateFile('Products/ImageArchive/selectColTimesRow.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/zpt/selectColTimesRow.zpt').__of__(self)
         return pt()          return pt()
   
     def setDone(self):      def setDone(self):
         """done"""          """done"""
                   
         pt=PageTemplateFile('Products/ImageArchive/changedColTimesRow.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/zpt/changedColTimesRow.zpt').__of__(self)
         return pt()          return pt()
   
     def setColTimesRow(self,cols,rows):      def setColTimesRow(self,cols,rows):
         """set coltimes row"""          """set coltimes row"""
         RESPONSE=self.REQUEST.RESPONSE          RESPONSE=self.REQUEST.RESPONSE
         if not rows:          if not rows:
             rows=100000              rows=None
         if rows=="":          if rows=="":
             rows=100000              rows=None
   
           if rows:
         RESPONSE.setCookie("ImageViewerRows",rows)          RESPONSE.setCookie("ImageViewerRows",rows)
         RESPONSE.setCookie("ImageViewerCols",cols)          RESPONSE.setCookie("ImageViewerCols",cols)
   
         RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")          RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
                   
     def getColTimesRow(self):      def getColTimesRow(self,showall='No'):
           """coltimesrow"""
                   
         REQUEST=self.REQUEST          REQUEST=self.REQUEST
         """matrix"""          """matrix"""
Line 517  class ImageCollection(Folder, Persistent Line 747  class ImageCollection(Folder, Persistent
             try:              try:
                 rows=int(REQUEST.cookies["ImageViewerRows"])                  rows=int(REQUEST.cookies["ImageViewerRows"])
             except:              except:
                 rows=20                  rows=6
         else:          else:
             rows=20              rows=6
                           
         if REQUEST.cookies.has_key("ImageViewerCols"):          if REQUEST.cookies.has_key("ImageViewerCols"):
             print "COLS",REQUEST.cookies["ImageViewerCols"]              #print "COLS",REQUEST.cookies["ImageViewerCols"]
             cols=int(REQUEST.cookies["ImageViewerCols"])              cols=int(REQUEST.cookies["ImageViewerCols"])
         else:          else:
             cols=4              cols=2
         print cols,rows  
           idsnumber=len(self.show_thumbs())
           if rows:
               if cols*rows >idsnumber:
                   rows=int(idsnumber/cols)+1
   
           #print cols,rows
           if showall=='yes':
               rows=int(idsnumber/cols)+1
               
         return (cols,rows)          return (cols,rows)
                                   
                   
Line 534  class ImageCollection(Folder, Persistent Line 773  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"]
               
                   
             try:              try:
                 startId=filename                  startId=filename
                   if startId=="":
                       startId=idsAll[0][0:]    
             except:              except:
                 startId=idsAll[0]                  startId=idsAll[0][0:]    
         else:          else:
             startId=idsAll[0]              startId=idsAll[0][0:]
               
                           
   
         print "NOR:",numberOfRows  
   
         if numberOfRows:          if numberOfRows:
              
               startPic=idsAll.index(startId)
               try:
                   
             startPic=idsAll.index(startId)              startPic=idsAll.index(startId)
             endPic=startPic+numberOfColumns*numberOfRows              endPic=startPic+numberOfColumns*numberOfRows
             ids=idsAll[startPic:endPic]              ids=idsAll[startPic:endPic]
               except:
                   ids=idsAll
         else:          else:
   
             ids=idsAll              ids=idsAll
   
                           
Line 571  class ImageCollection(Folder, Persistent Line 822  class ImageCollection(Folder, Persistent
                   
     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/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/thumbselected2.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/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/thumbs.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/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/thumb2.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/zpt/thumb2.zpt').__of__(self)
           return pt()
   
       def thumblistNewWindow(self):
           """Thumbs mit clik neues Fenster oeffnen"""
           pt=PageTemplateFile('Products/ImageArchive/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/navigation_selected.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/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/navigation.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/zpt/navigation.zpt').__of__(self)
         return pt()          return pt()
   
   
Line 609  class ImageCollection(Folder, Persistent Line 866  class ImageCollection(Folder, Persistent
         else:          else:
             filen=""              filen=""
         self.REQUEST.SESSION['filename']=filen          self.REQUEST.SESSION['filename']=filen
         pt=PageTemplateFile('Products/ImageArchive/overview_selected2.zpt').__of__(self)          pt=PageTemplateFile('Products/ImageArchive/zpt/overview_selected2.zpt').__of__(self)
         return pt()            return pt()  
                   
     def index_html(self):      def index_html(self):
Line 618  class ImageCollection(Folder, Persistent Line 875  class ImageCollection(Folder, Persistent
             filen=self.REQUEST['filename']              filen=self.REQUEST['filename']
         else:          else:
             filen=""              filen=""
   
         self.REQUEST.SESSION['filename']=filen          self.REQUEST.SESSION['filename']=filen
         pt=PageTemplateFile('Products/ImageArchive/overview.zpt').__of__(self)          
           if self.REQUEST.has_key('showall'):
   
               self.REQUEST.SESSION['showall']=self.REQUEST.get('showall')
           else:
               self.REQUEST.SESSION['showall']=self.REQUEST.SESSION.get('showall','no')
               
           
           pt=PageTemplateFile('Products/ImageArchive/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/AddImageCollectionForm.zpt').__of__(self)      pt=PageTemplateFile('Products/ImageArchive/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 633  def manage_AddImageCollection(self,id,ti Line 899  def manage_AddImageCollection(self,id,ti
     self._setObject(id,newObj)      self._setObject(id,newObj)
           
     if RESPONSE is not None:      if RESPONSE is not None:
           RESPONSE.redirect('manage_main')
   
   
   class ImageCollectionIFrame(ImageCollection):
       """Class fuer Collection set als IFrame"""
   
       meta_type="ImageCollectionIFrame"
       label=ImageCollection.title
   
       def getImageTag(self):
           """ hack : method needed by echo_content"""
           return ""
       
       def rotate(self,angle,url,RESPONSE):
       """rotate"""
       
       RESPONSE.redirect("javascript:document.domain='mpg.de';parent.iframe.right.rotation(%i)"%int(angle))
       RESPONSE.redirect(url)
       def request(self):
           """request"""
           return self.REQUEST
           
       def index_html(self):
           """index"""
           if self.REQUEST.has_key('filename'):
               filen=self.REQUEST['filename']
           else:
               filen=""
           self.REQUEST.SESSION['filename']=filen
           
       
           pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameMain.zpt').__of__(self)
           return pt()
   
       def iframe_html(self):
           """iframe"""
           if self.REQUEST.has_key('filename'):
               filen=self.REQUEST['filename']
           else:
               filen=""
           self.REQUEST.response.setCookie('filename',filen)
           pt=PageTemplateFile('Products/ImageArchive/zpt/IFrameOverview.zpt').__of__(self)
           return pt()
   
   
   def manage_AddImageCollectionIFrameForm(self):
       """Nothing yet"""
       pt=PageTemplateFile('Products/ImageArchive/zpt/AddImageCollectionIFrameForm.zpt').__of__(self)
       return pt()
       
   def manage_AddImageCollectionIFrame(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
       """Add ImageCollection"""
       newObj=ImageCollectionIFrame(id,title,ImageStoragePath,ImageViewerPath,defaultMetaString)
       self._setObject(id,newObj)
       
       if RESPONSE is not None:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
   
   

Removed from v.1.11  
changed lines
  Added in v.1.32


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