Diff for /versionedFile/versionedFile.py between versions 1.36 and 1.45

version 1.36, 2005/06/21 08:56:04 version 1.45, 2005/10/18 15:37:11
Line 1 Line 1
   
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from OFS.Image import File  from OFS.Image import File
 from OFS.Image import cookId  from OFS.Image import cookId
Line 7  from AccessControl import getSecurityMan Line 8  from AccessControl import getSecurityMan
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
   try:
    from Products.ImageArchive.ImageArchive import manage_AddImageZogiLib
   except:
    print "no images"
   
 from threading import Thread  from threading import Thread
 import shutil  import shutil
 import tempfile  import tempfile
 import os.path  import os.path
   import urllib
   
 import time  import time
 try:  try:
Line 25  except: Line 31  except:
           
 def sortv(x,y):  def sortv(x,y):
     return cmp(x[0],y[0])      return cmp(x[0],y[0])
 tdir = "/tmp/testia"  tdir = "/tmp/downloadVersionedFiles"
   
 class generateDownloadZip:  class generateDownloadZip:
     """generateDownloadSet"""      """generateDownloadSet"""
Line 52  class generateDownloadZip: Line 58  class generateDownloadZip:
         if not os.path.exists(tmpPath):          if not os.path.exists(tmpPath):
             os.mkdir(tmpPath)               os.mkdir(tmpPath) 
                   
     self.response="<h3>1. step: gettung the files</h3>"      self.response="<h3>1. step: getting the files</h3>"
   
         for files in self.folder.ZopeFind(self.folder,obj_metatypes=['versionedFile']):          for files in self.folder.ZopeFind(self.folder,obj_metatypes=['versionedFile']):
             lastV=files[1].getLastVersion()              lastV=files[1].getLastVersion()
Line 118  class versionedFileFolder(Folder,ECHO_ba Line 124  class versionedFileFolder(Folder,ECHO_ba
   
     manage_options =optTMP+(      manage_options =optTMP+(
         {'label':'Generate Index.html','action':'generateIndexHTML'},          {'label':'Generate Index.html','action':'generateIndexHTML'},
                   {'label':'Generate Image Index.html','action':'generateIndexHTML_image'},
                 {'label':'Generate history_template.html','action':'generateHistoryHTML'},                  {'label':'Generate history_template.html','action':'generateHistoryHTML'},
                 {'label':'Import Folder','action':'importFolderForm'},                  {'label':'Import Folder','action':'importFolderForm'},
                 {'label':'Export Folder','action':'exportFolder'},                  {'label':'Export Folder','action':'exportFolder'},
Line 156  class versionedFileFolder(Folder,ECHO_ba Line 163  class versionedFileFolder(Folder,ECHO_ba
         """exportiert alle akutellen files des folders"""          """exportiert alle akutellen files des folders"""
         threadName=repeat          threadName=repeat
                   
                                  downloadZip=generateDownloadZip(self,self.absolute_url())
         if not threadName or threadName=="":          downloadZip()
             threadStart=generateDownloadZip(self,self.absolute_url())          return downloadZip.getResult()
             thread=Thread(target=threadStart)         ##  if not threadName or threadName=="":
               ##             threadStart=generateDownloadZip(self,self.absolute_url())
             thread.start()  ##             thread=Thread(target=threadStart)
               
                       ##             thread.start()
             self.zipThreads[thread.getName()[0:]]=threadStart  
             self.zipThreads2[thread.getName()[0:]]=thread                      
             self.REQUEST.SESSION['threadName']=thread.getName()[0:]  ##             self.zipThreads[thread.getName()[0:]]=threadStart
             wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['zip_wait_template'])  ##             self.zipThreads2[thread.getName()[0:]]=thread
             if wait_template:  ##             self.REQUEST.SESSION['threadName']=thread.getName()[0:]
                 return wait_template[0][1]()  ##             wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['zip_wait_template'])
             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self)  ##             if wait_template:
             return pt()  ##                 return wait_template[0][1]()
                   ##             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self)
         else:  ##             return pt()
             self.REQUEST.SESSION['threadName']=threadName                  
   ##         else:
             if (self.zipThreads[threadName].getResult()==None):  ##             self.REQUEST.SESSION['threadName']=threadName
   
                 wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template'])  ##             if (self.zipThreads[threadName].getResult()==None):
                 if wait_template:  
                     return wait_template[0][1]()  ##                 wait_template=self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['wait_template'])
   ##                 if wait_template:
                 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self)  ##                     return wait_template[0][1]()
                 return pt()  
             else:  ##                 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait.zpt')).__of__(self)
                 if self.zipThreads[threadName].isDone():  ##                 return pt()
                     self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()  ##             else:
                     self.zipThreads2[threadName].join()  ##                 if self.zipThreads[threadName].isDone():
                     del(self.zipThreads2[threadName])  ##                     self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()
                     del(self.zipThreads[threadName])  ##                     self.zipThreads2[threadName].join()
                     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_result.zpt')).__of__(self)  ##                     del(self.zipThreads2[threadName])
                     return pt()  ##                     del(self.zipThreads[threadName])
   ##                     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_result.zpt')).__of__(self)
                 else:  ##                     return pt()
                     self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()  
                     self.REQUEST.SESSION['threadName']=threadName  ##                 else:
                     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait_result.zpt')).__of__(self)  ##                     self.REQUEST.SESSION['result']=self.zipThreads[threadName].getResult()
                     return pt()  ##                     self.REQUEST.SESSION['threadName']=threadName
   ##                     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','zip_wait_result.zpt')).__of__(self)
   ##                     return pt()
   
     def downloadSet(self,fn):      def downloadSet(self,fn):
         """download prepared set"""          """download prepared set"""
         filename=os.path.join(tdir,fn)          filename=os.path.join(tdir,fn)
   
                   
         self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%"donloadFileFolder.tgz")          self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%"downloadFileFolder.tgz")
         self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")          self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
         len=os.stat(filename)[6]          len=os.stat(filename)[6]
         self.REQUEST.RESPONSE.setHeader("Content-Length",len)          self.REQUEST.RESPONSE.setHeader("Content-Length",len)
Line 220  class versionedFileFolder(Folder,ECHO_ba Line 229  class versionedFileFolder(Folder,ECHO_ba
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','helpDownload')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','helpDownload')).__of__(self)
         return pt()          return pt()
           
       def generateIndexHTML_image(self,RESPONSE=None):
           """lege standard index.html an"""
   
   
           if not self.ZopeFind(self,obj_ids=['index.html']):
               zt=ZopePageTemplate('index.html')
               self._setObject('index.html',zt)
               default_content_fn = os.path.join(package_home(globals()),
                                                  'zpt/versionFileFolderMain_image.zpt')
               text = open(default_content_fn).read()
               zt.pt_edit(text, 'text/html')
   
           else:
               return "already exists!"
           
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
     def generateIndexHTML(self,RESPONSE=None):      def generateIndexHTML(self,RESPONSE=None):
         """lege standard index.html an"""          """lege standard index.html an"""
   
Line 327  class versionedFileFolder(Folder,ECHO_ba Line 354  class versionedFileFolder(Folder,ECHO_ba
         else:          else:
             return ""              return ""
                   
   
       security.declareProtected('View','index_html')
     def index_html(self):      def index_html(self):
         """main"""          """main"""
         ext=self.ZopeFind(self,obj_ids=["index.html"])          ext=self.ZopeFind(self,obj_ids=["index.html"])
Line 434  class versionedFileObject(File): Line 463  class versionedFileObject(File):
     manage_editForm  =DTMLFile('dtml/fileEdit',globals(),      manage_editForm  =DTMLFile('dtml/fileEdit',globals(),
                                Kind='File',kind='file')                                 Kind='File',kind='file')
     manage_editForm._setName('manage_editForm')      manage_editForm._setName('manage_editForm')
       security= ClassSecurityInfo()
   
     def getVComment(self):      def getVComment(self):
         """get the comment of this file"""          """get the comment of this file"""
Line 469  class versionedFileObject(File): Line 499  class versionedFileObject(File):
             return REQUEST.RESPONSE.redirect(self.REQUEST.SESSION['refer'])              return REQUEST.RESPONSE.redirect(self.REQUEST.SESSION['refer'])
         return REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url()+"/history")          return REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url()+"/history")
           
       security.declarePublic('getTime')                                              
     def getTime(self):      def getTime(self):
         """getTime"""          """getTime"""
         #return self.bobobase_modification_time().ISO()          #return self.bobobase_modification_time().ISO()
Line 494  class versionedFileObject(File): Line 524  class versionedFileObject(File):
         self.content_type="application/octet-stream"          self.content_type="application/octet-stream"
         #self.REQUEST.RESPONSE.redirect(self.absolute_url())          #self.REQUEST.RESPONSE.redirect(self.absolute_url())
         self.REQUEST.RESPONSE.write(self.index_html())          self.REQUEST.RESPONSE.write(self.index_html())
           #txt=urllib.urlopen(self.absolute_url()).read()
       #self.REQUEST.RESPONSE.write(txt)
         #self.REQUEST.RESPONSE.write("bl")          #self.REQUEST.RESPONSE.write("bl")
         self.REQUEST.close()          self.REQUEST.close()
           
Line 514  class versionedFileObject(File): Line 546  class versionedFileObject(File):
         """set version"""          """set version"""
         self.versionNumber=versionNumber          self.versionNumber=versionNumber
   
       security.declarePublic('getVersionNumber')                                              
     def getVersionNumber(self):      def getVersionNumber(self):
         """get version"""          """get version"""
         return self.versionNumber          return self.versionNumber
   
       security.declarePublic('getVersionComment')                                              
       def getVersionComment(self):
           """get version"""
           return self.versionComment
         
                           
       security.declarePublic('lastEditor')                                                
     def lastEditor(self):      def lastEditor(self):
         """last Editor"""          """last Editor"""
         if hasattr(self,'author'):          if hasattr(self,'author'):
Line 585  class versionedFile(Folder): Line 623  class versionedFile(Folder):
         self.lockedBy=lockedBy          self.lockedBy=lockedBy
         self.author=author          self.author=author
   
       def manageImagesForm(self):
           """manage Images attached to the file"""
   
           self.REQUEST.SESSION['refer']=self.REQUEST['HTTP_REFERER']
           
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','manageImage')).__of__(self)
           return pt()
   
       def manageImages(self,imageUrl=None,caption=None,REQUEST=None):
           """manage URL"""
           if imageUrl and (not imageUrl==""):
               manage_AddImageZogiLib(self,libPath=imageUrl,caption=caption)
   
           if self.REQUEST.SESSION.has_key('refer'):
   
               return REQUEST.RESPONSE.redirect(self.REQUEST.SESSION['refer'])
           return REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url())
       
       
       
       def changeImages(self,caption=None,submit=None,id=None,REQUEST=None):
           """manage URL"""
           if submit=="change caption":
               image=self.ZopeFind(self,obj_ids=[id])
               if image:
                   image[0][1].caption=caption[0:]
           
           elif submit=="delete":
               image=self.ZopeFind(self,obj_ids=[id])
               if image:
                   self.manage_delObjects([image[0][1].getId()])
   
   
           if self.REQUEST.SESSION.has_key('refer'):
   
               return REQUEST.RESPONSE.redirect(self.REQUEST.SESSION['refer'])
           return REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url())
       
           
   
   
       def getImages(self):
           """get Images"""
           images=self.ZopeFind(self,obj_metatypes=["ImageZogiLib"])
           if not images:
               return None
           else:
               return images
                                
           
     def getComment(self):      def getComment(self):
         """get the comment of this file"""          """get the comment of this file"""
         if not hasattr(self,'comment') or (not self.comment) or (self.comment.lstrip()==""):          if not hasattr(self,'comment') or (not self.comment) or (self.comment.lstrip()==""):
Line 633  class versionedFile(Folder): Line 721  class versionedFile(Folder):
         lastVersion=self.getLastVersion()          lastVersion=self.getLastVersion()
         #return "File:"+self.title+"  Version:%i"%lastVersion.versionNumber," modified:",lastVersion.bobobase_modification_time()," size:",lastVersion.getSize(),"modified by:",lastVersion.lastEditor()          #return "File:"+self.title+"  Version:%i"%lastVersion.versionNumber," modified:",lastVersion.bobobase_modification_time()," size:",lastVersion.getSize(),"modified by:",lastVersion.lastEditor()
         return "File: %s Version:%i modified:%s size:%s modified by:%s"%(self.title,lastVersion.versionNumber,lastVersion.getTime(),lastVersion.getSize(),lastVersion.lastEditor())          return "File: %s Version:%i modified:%s size:%s modified by:%s"%(self.title,lastVersion.versionNumber,lastVersion.getTime(),lastVersion.getSize(),lastVersion.lastEditor())
                                                                                security= ClassSecurityInfo()                           
       security.declarePublic('getVersion')                                              
     def getVersion(self):      def getVersion(self):
         tmp=0          tmp=0
         for version in self.ZopeFind(self):          for version in self.ZopeFind(self):
Line 644  class versionedFile(Folder): Line 733  class versionedFile(Folder):
                     tmp=int(version[1].versionNumber,)                      tmp=int(version[1].versionNumber,)
         return tmp+1          return tmp+1
   
     security= ClassSecurityInfo()  
     security.declareProtected('AUTHENTICATED_USER','unlock')      security.declareProtected('AUTHENTICATED_USER','unlock')
   
     def history(self):      def history(self):

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


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