Diff for /versionedFile/versionedFile.py between versions 1.1 and 1.9

version 1.1, 2004/03/22 15:46:07 version 1.9, 2004/07/08 16:30:53
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
 from Globals import DTMLFile, InitializeClass  from Globals import DTMLFile, InitializeClass,package_home
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from AccessControl import getSecurityManager  from AccessControl import getSecurityManager
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
   from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
   import os.path
   
   
 def sortv(x,y):  def sortv(x,y):
     return cmp(x[0],y[0])      return cmp(x[0],y[0])
Line 18  class versionedFileFolder(Folder): Line 21  class versionedFileFolder(Folder):
     security= ClassSecurityInfo()      security= ClassSecurityInfo()
     security.declareProtected('AUTHENTICATED_USER','addFileForm')      security.declareProtected('AUTHENTICATED_USER','addFileForm')
           
       manage_options = Folder.manage_options+(
           {'label':'Generate Index.html','action':'generateIndexHTML'},
                   {'label':'Generate history_template.html','action':'generateHistoryHTML'},
           )
   
       def generateIndexHTML(self,RESPONSE=None):
           """lege standard index.html an"""
   
           
   
           
           if not hasattr(self,'index.html'):
               zt=ZopePageTemplate('index.html')
               self._setObject('index.html',zt)
               default_content_fn = os.path.join(package_home(globals()),
                                                  'zpt/versionFileFolderMain.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 generateHistoryHTML(self,RESPONSE=None):
           """lege standard index.html an"""
   
           
   
           
           if not hasattr(self,'history_template.html'):
               zt=ZopePageTemplate('history_template.html')
               self._setObject('history_template.html',zt)
               default_content_fn = os.path.join(package_home(globals()),
                                                  'zpt/versionHistory.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 getVersionedFiles(self):      def getVersionedFiles(self):
         """get all versioned files"""          """get all versioned files"""
         versionedFiles=self.ZopeFind(self,obj_metatypes="versionedFiles")          
         print versionedFiles      versionedFiles=self.ZopeFind(self,obj_metatypes=['versionedFile'])
          
         return versionedFiles          return versionedFiles
   
           
       def header_html(self):
           """zusätzlicher header"""
           ext=self.ZopeFind(self,obj_ids=["header.html"])
           if ext:
               return ext[0][1]()
           else:
               return ""
           
     def index_html(self):      def index_html(self):
         """main"""          """main"""
           ext=self.ZopeFind(self,obj_ids=["index.html"])
           if ext:
               return ext[0][1]()
           
         pt=PageTemplateFile('Products/versionedFile/zpt/versionFileFolderMain').__of__(self)          pt=PageTemplateFile('Products/versionedFile/zpt/versionFileFolderMain').__of__(self)
         return pt()          return pt()
   
Line 37  class versionedFileFolder(Folder): Line 99  class versionedFileFolder(Folder):
         return out()          return out()
   
   
     def addFile(self,vC,file,content_type='',RESPONSE=None):      def addFile(self,vC,file,author,content_type='',RESPONSE=None):
         """ add a new file"""          """ add a new file"""
         id=file.filename          id=file.filename
                   
Line 45  class versionedFileFolder(Folder): Line 107  class versionedFileFolder(Folder):
         manage_addVersionedFile(self,id,'','')          manage_addVersionedFile(self,id,'','')
         ob=self._getOb(id)          ob=self._getOb(id)
         ob.title=id          ob.title=id
         print "MYVC",vC          file2=file
         ob.manage_addVersionedFileObject(self,id,vC,file,content_type=content_type)          ob.manage_addVersionedFileObject(id,vC,author,file2,content_type=content_type)
   
         RESPONSE.redirect(self.REQUEST['URL1'])          RESPONSE.redirect(self.REQUEST['URL1'])
   
Line 94  class versionedFileObject(File): Line 156  class versionedFileObject(File):
                                Kind='File',kind='file')                                 Kind='File',kind='file')
     manage_editForm._setName('manage_editForm')      manage_editForm._setName('manage_editForm')
   
       def download(self):
           """download and lock"""
           
           
           self.content_type="octet/stream"
           self.REQUEST.RESPONSE.redirect(self.absolute_url())
       
       def downloadLocked(self):
           """download and lock"""
           
           
           if self.REQUEST['AUTHENTICATED_USER']=='Anonymous User':
               return "please login first"
           if not self.aq_parent.lockedBy=="":
               return "cannot be locked because is already locked by %s"%self.lockedBy
           self.aq_parent.lockedBy=self.REQUEST['AUTHENTICATED_USER']
   
           self.content_type="octet/stream"
           self.REQUEST.RESPONSE.redirect(self.absolute_url())
   
     def setVersionNumber(self,versionNumber):      def setVersionNumber(self,versionNumber):
         """set version"""          """set version"""
Line 105  class versionedFileObject(File): Line 186  class versionedFileObject(File):
   
     def lastEditor(self):      def lastEditor(self):
         """last Editor"""          """last Editor"""
           if hasattr(self,'author'):
               return self.author            
           else:
         jar=self._p_jar          jar=self._p_jar
         oid=self._p_oid          oid=self._p_oid
   
         if jar is None or oid is None: return None          if jar is None or oid is None: return None
   
         return jar.db().history(oid)[0]['user_name']          return jar.db().history(oid)[0]['user_name']
   
           
Line 115  class versionedFileObject(File): Line 201  class versionedFileObject(File):
                   
 manage_addVersionedFileObjectForm=DTMLFile('dtml/fileAdd', globals(),Kind='VersionedFileObject',kind='versionedFileObject', version='1')  manage_addVersionedFileObjectForm=DTMLFile('dtml/fileAdd', globals(),Kind='VersionedFileObject',kind='versionedFileObject', version='1')
   
 def manage_addVersionedFileObject(self,id,vC='',file='',title='',precondition='', content_type='',  def manage_addVersionedFileObject(self,id,vC='',author='', file='',title='',precondition='', content_type='',
                    REQUEST=None):                     REQUEST=None):
     """Add a new File object.      """Add a new File object.
   
Line 133  def manage_addVersionedFileObject(self,i Line 219  def manage_addVersionedFileObject(self,i
     # First, we create the file without data:      # First, we create the file without data:
     self._setObject(id, versionedFileObject(id,title,'',content_type, precondition))      self._setObject(id, versionedFileObject(id,title,'',content_type, precondition))
     self._getOb(id).versionComment=str(vC)      self._getOb(id).versionComment=str(vC)
       setattr(self._getOb(id),'author',author)
           
     # Now we "upload" the data.  By doing this in two steps, we      # Now we "upload" the data.  By doing this in two steps, we
     # can use a database trick to make the upload more efficient.      # can use a database trick to make the upload more efficient.
Line 150  def manage_addVersionedFileObject(self,i Line 237  def manage_addVersionedFileObject(self,i
 class versionedFile(Folder):  class versionedFile(Folder):
     """Versioniertes File"""      """Versioniertes File"""
   
     def __init__(self, id, title, lockedBy):      def __init__(self, id, title, lockedBy,author):
         """init"""          """init"""
         self.id=id          self.id=id
         self.title=title          self.title=title
         self.lockedBy=lockedBy          self.lockedBy=lockedBy
           self.author=author
                   
     meta_type="versionedFile"      meta_type="versionedFile"
   
Line 162  class versionedFile(Folder): Line 250  class versionedFile(Folder):
         """Last Version"""          """Last Version"""
         tmp=0          tmp=0
         lastVersion=None          lastVersion=None
         print "FI",self.ZopeFind(self)          
         for version in self.ZopeFind(self):          for version in self.ZopeFind(self):
             print version              
             if hasattr(version[1],'versionNumber'):              if hasattr(version[1],'versionNumber'):
                 print "HI",version[1].versionNumber                  
                 if int(version[1].versionNumber) > tmp:                  if int(version[1].versionNumber) > tmp:
                     tmp=int(version[1].versionNumber,)                      tmp=int(version[1].versionNumber,)
                     lastVersion=version[1]                      lastVersion=version[1]
Line 181  class versionedFile(Folder): Line 269  class versionedFile(Folder):
     def getVersion(self):      def getVersion(self):
         tmp=0          tmp=0
         for version in self.ZopeFind(self):          for version in self.ZopeFind(self):
             print version              
             if hasattr(version[1],'versionNumber'):              if hasattr(version[1],'versionNumber'):
                 print "HI",version[1].versionNumber                  
                 if int(version[1].versionNumber) > tmp:                  if int(version[1].versionNumber) > tmp:
                     tmp=int(version[1].versionNumber,)                      tmp=int(version[1].versionNumber,)
         return tmp+1          return tmp+1
Line 193  class versionedFile(Folder): Line 281  class versionedFile(Folder):
   
     def history(self):      def history(self):
         """history"""          """history"""
   
           ext=self.ZopeFind(self.aq_parent,obj_ids=["history_template.html"])
           if ext:
               return getattr(self,ext[0][1].getId())()
           
         pt=PageTemplateFile('Products/versionedFile/zpt/versionHistory').__of__(self)          pt=PageTemplateFile('Products/versionedFile/zpt/versionHistory').__of__(self)
         return pt()          return pt()
   
Line 205  class versionedFile(Folder): Line 298  class versionedFile(Folder):
         ret.sort(sortv)          ret.sort(sortv)
         return ret          return ret
   
               security.declareProtected('AUTHENTICATED_USER','unlock')   
     def unlock(self,RESPONSE):      def unlock(self,RESPONSE):
         """unlock"""          """unlock"""
         if str(self.lockedBy) in str(self.REQUEST['AUTHENTICATED_USER']):          if str(self.lockedBy) in [str(self.REQUEST['AUTHENTICATED_USER'])]:
             self.lockedBy=''              self.lockedBy=''
             RESPONSE.redirect(self.REQUEST['URL2'])              RESPONSE.redirect(self.REQUEST['URL2'])
         else:          else:
             return "Sorry, not locked by you! (%s,%s)"%(self.lockedBy,self.REQUEST['AUTHENTICATED_USER'])              return "Sorry, not locked by you! (%s,%s)"%(self.lockedBy,self.REQUEST['AUTHENTICATED_USER'])
                   
     security= ClassSecurityInfo()      
     security.declareProtected('AUTHENTICATED_USER','addVersionedFileObjectForm')      security.declareProtected('AUTHENTICATED_USER','addVersionedFileObjectForm')
   
     def addVersionedFileObjectForm(self):      def addVersionedFileObjectForm(self):
         """add a new version"""          """add a new version"""
         print self.REQUEST['AUTHENTICATED_USER']          
         if str(self.REQUEST['AUTHENTICATED_USER']) in "Anonymous User":          if str(self.REQUEST['AUTHENTICATED_USER']) in ["Anonymous User"]:
             return "please login first"              return "please login first"
         if (self.lockedBy==self.REQUEST['AUTHENTICATED_USER']) or (self.lockedBy==''):          if (self.lockedBy==self.REQUEST['AUTHENTICATED_USER']) or (self.lockedBy==''):
             out=DTMLFile('dtml/fileAdd', globals(),Kind='VersionedFileObject',kind='versionedFileObject',version=self.getVersion()).__of__(self)              out=DTMLFile('dtml/fileAdd', globals(),Kind='VersionedFileObject',kind='versionedFileObject',version=self.getVersion()).__of__(self)
Line 228  class versionedFile(Folder): Line 321  class versionedFile(Folder):
         else:          else:
             return "Sorry file is locked by somebody else"              return "Sorry file is locked by somebody else"
                   
     def manage_addVersionedFileObject(self,id,vC,file='',title='',precondition='', content_type='',RESPONSE=None):      def manage_addVersionedFileObject(self,id,vC,author,file='',title='',precondition='', content_type='',changeName='no',RESPONSE=None):
         """add"""          """add"""
                   
         vC=self.REQUEST['vC']          vC=self.REQUEST['vC']
           author=self.REQUEST['author']
           
           if changeName=="yes":
               self.title=file.filename[0:]
   
   
         id="V%i"%self.getVersion()+"_"+self.title          id="V%i"%self.getVersion()+"_"+self.title
         manage_addVersionedFileObject(self,id,vC,file,"V%i"%self.getVersion()+"_"+self.title,precondition, content_type)          manage_addVersionedFileObject(self,id,vC,author,file,"V%i"%self.getVersion()+"_"+self.title,precondition, content_type)
         objs=self.ZopeFind(self,obj_ids=[id])[0][1].setVersionNumber(int(self.getVersion()))          objs=self.ZopeFind(self,obj_ids=[id])[0][1].setVersionNumber(int(self.getVersion()))
   
         if RESPONSE:          if RESPONSE:
Line 241  class versionedFile(Folder): Line 340  class versionedFile(Folder):
   
     security.declareProtected('AUTHENTICATED_USER','downloadLocked')      security.declareProtected('AUTHENTICATED_USER','downloadLocked')
   
       def download(self):
           """download and lock"""
           self.getLastVersion().content_type="application/octet-stream"
           self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getLastVersion().getId())
       
     def downloadLocked(self):      def downloadLocked(self):
         """download and lock"""          """download and lock"""
         if self.REQUEST['AUTHENTICATED_USER']=='Anonymous User':          if self.REQUEST['AUTHENTICATED_USER']=='Anonymous User':
Line 248  class versionedFile(Folder): Line 352  class versionedFile(Folder):
         if not self.lockedBy=="":          if not self.lockedBy=="":
             return "cannot be locked because is already locked by %s"%self.lockedBy              return "cannot be locked because is already locked by %s"%self.lockedBy
         self.lockedBy=self.REQUEST['AUTHENTICATED_USER']          self.lockedBy=self.REQUEST['AUTHENTICATED_USER']
                   self.getLastVersion().content_type="application/octet-stream"
         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getLastVersion().getId())          self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getLastVersion().getId())
           
 def manage_addVersionedFileForm(self):  def manage_addVersionedFileForm(self):
Line 256  def manage_addVersionedFileForm(self): Line 360  def manage_addVersionedFileForm(self):
     pt=PageTemplateFile('Products/versionedFile/zpt/addVersionedFile.zpt').__of__(self)      pt=PageTemplateFile('Products/versionedFile/zpt/addVersionedFile.zpt').__of__(self)
     return pt()      return pt()
   
 def manage_addVersionedFile(self,id,title,lockedBy, RESPONSE=None):  def manage_addVersionedFile(self,id,title,lockedBy, author=None, RESPONSE=None):
     """add the OSAS_root"""      """add the OSAS_root"""
     newObj=versionedFile(id,title,lockedBy)      newObj=versionedFile(id,title,lockedBy,author)
     self._setObject(id,newObj)      self._setObject(id,newObj)
      
     if RESPONSE is not None:      if RESPONSE is not None:
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
   

Removed from v.1.1  
changed lines
  Added in v.1.9


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