Diff for /versionedFile/versionedFile.py between versions 1.1.1.1 and 1.34

version 1.1.1.1, 2004/03/22 15:46:07 version 1.34, 2005/03/31 16:44:23
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
   
   import time
   try:
       from Products.ECHO_content.ECHO_collection import ECHO_basis
   except:
       print "ECHO Elements not imported"
       class ECHO_basis:
            """leer"""
                manage_options=()
   
   
 def sortv(x,y):  def sortv(x,y):
     return cmp(x[0],y[0])      return cmp(x[0],y[0])
     
 class versionedFileFolder(Folder):  class versionedFileFolder(Folder,ECHO_basis):
     """Folder with versioned files"""      """Folder with versioned files"""
   
       
     meta_type = "versionedFileFolder"      meta_type = "versionedFileFolder"
   
     security= ClassSecurityInfo()      security= ClassSecurityInfo()
     security.declareProtected('AUTHENTICATED_USER','addFileForm')      security.declareProtected('AUTHENTICATED_USER','addFileForm')
           
     def getVersionedFiles(self):      if ECHO_basis:
           optTMP= Folder.manage_options+ECHO_basis.manage_options
       else:
           optTMP= Folder.manage_options
   
       manage_options =optTMP+(
           {'label':'Generate Index.html','action':'generateIndexHTML'},
                   {'label':'Generate history_template.html','action':'generateHistoryHTML'},
                   )
   
     
       
       def helpDownload(self):
           """download help"""
           
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','helpDownload')).__of__(self)
           return pt()
       
       def generateIndexHTML(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.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 self.ZopeFind(self,obj_ids=['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,sortField='title'):
         """get all versioned files"""          """get all versioned files"""
         versionedFiles=self.ZopeFind(self,obj_metatypes="versionedFiles")  
         print versionedFiles          def sortName(x,y):
               return cmp(x[1].title.lower(),y[1].title.lower())
   
           def sortDate(x,y):
               return cmp(y[1].getLastVersion().getTime(),x[1].getLastVersion().getTime())
   
           
           def sortComment(x,y):
   
           
               
        try:
           xc=getattr(x[1],'comment','ZZZZZZZZZZZZZ').lower()
        except:
           xc='ZZZZZZZZZZZZZ'.lower()
        try:
           yc=getattr(y[1],'comment','ZZZZZZZZZZZZZ').lower()
            except:
               yc='ZZZZZZZZZZZZZ'.lower()
   
   
            if (xc=='') or (xc=='ZZZZZZZZZZZZZ'.lower()):
                
                try:
                    xc=x[1].getLastVersion().getVComment().lower()
                except:
                    xc='ZZZZZZZZZZZZZ'.lower()
                    
            if (yc=='') or (yc=='ZZZZZZZZZZZZZ'.lower()):
                try:
                    yc=y[1].getLastVersion().getVComment().lower()
                except:
                    yc='ZZZZZZZZZZZZZ'.lower()
   
            
            return cmp(xc,yc)
   
           def sortAuthor(x,y):
               
               return cmp(x[1].getLastVersion().lastEditor().lower(),y[1].getLastVersion().lastEditor().lower())
           
       versionedFiles=self.ZopeFind(self,obj_metatypes=['versionedFile'])
   
           if sortField=='title':
               versionedFiles.sort(sortName)
           elif sortField=='date':
               versionedFiles.sort(sortDate)
           elif sortField=='author':
               versionedFiles.sort(sortAuthor)
           elif sortField=='comment':
               versionedFiles.sort(sortComment)
   
         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"""
         pt=PageTemplateFile('Products/versionedFile/zpt/versionFileFolderMain').__of__(self)          ext=self.ZopeFind(self,obj_ids=["index.html"])
           if ext:
               return ext[0][1]()
           
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','versionFileFolderMain')).__of__(self)
         return pt()          return pt()
   
   
     def addFileForm(self):      def addFileForm(self):
         """add a file"""          """add a file"""
           ext=self.ZopeFind(self,obj_ids=["addFileForm.dtml"])
           if ext:
               return ext[0][1]('',globals(),version='1',AUTHENTICATED_USER=self.REQUEST.AUTHENTICATED_USER)
           
         out=DTMLFile('dtml/newFileAdd', globals(),Kind='VersionedFileObject',kind='versionedFileObject',version='1').__of__(self)          out=DTMLFile('dtml/newFileAdd', globals(),Kind='VersionedFileObject',kind='versionedFileObject',version='1').__of__(self)
         return out()          return out()
   
   
     def addFile(self,vC,file,content_type='',RESPONSE=None):      def addFile(self,vC,file,author,newName='',content_type='',RESPONSE=None):
         """ add a new file"""          """ add a new file"""
         id=file.filename          if newName=='':
               filename=file.filename
               id=filename[max(filename.rfind('/'),
                                       filename.rfind('\\'),
                                       filename.rfind(':'),
                                       )+1:]
   
           else:
               id=newName
                   
         vC=self.REQUEST.form['vC']          vC=self.REQUEST.form['vC']
         manage_addVersionedFile(self,id,'','')          manage_addVersionedFile(self,id,'','')
           #if (getattr(self,'commentNonEmpty',0)==1) and vC.strip()=="":
               
               
         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)          
           obj=ob.manage_addVersionedFileObject(id,vC,author,file2,content_type=content_type)
           self.REQUEST.SESSION['objID']=ob.getId()
           self.REQUEST.SESSION['objID_parent']=None
   
           if obj.getSize()==0:
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','errorUploadFile')).__of__(self)
               return pt()
           
           RESPONSE.redirect(self.REQUEST['URL1'])
   
   
       def deleteEmptyObject(self,submit,RESPONSE=None):
           """deleteemptyobject"""
           if submit=="delete it":
               if self.REQUEST.SESSION['objID_parent']:
                   obj=getattr(self,self.REQUEST.SESSION['objID_parent'])
   
               else:
                   obj=self
               obj.manage_delObjects([self.REQUEST.SESSION['objID']])
   
         RESPONSE.redirect(self.REQUEST['URL1'])          RESPONSE.redirect(self.REQUEST['URL1'])
   
Line 94  class versionedFileObject(File): Line 264  class versionedFileObject(File):
                                Kind='File',kind='file')                                 Kind='File',kind='file')
     manage_editForm._setName('manage_editForm')      manage_editForm._setName('manage_editForm')
   
       def getVComment(self):
           """get the comment of this file"""
           if not hasattr(self,'vComment') or (not self.vComment) or (self.vComment.lstrip()==""):
               return "Add comment"
   
           else:
               return self.vComment
               
       def manageVCommentForm(self):
           """add a comment"""
   
           self.REQUEST.SESSION['refer']=self.REQUEST['HTTP_REFERER']
   
   
           
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addVComment')).__of__(self)
           return pt()
   
       def manageVComment(self,text,comment_author,submit,REQUEST=None):
           """manage comments"""
           if submit =='change':
               if text=='':
                   self.vComment=None
               else:
                   self.vComment=text
                   self.vComment_author=comment_author
   
                   self.vComment_date=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
   
           if self.REQUEST.SESSION.has_key('refer'):
   
               return REQUEST.RESPONSE.redirect(self.REQUEST.SESSION['refer'])
           return REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url()+"/history")
       
   
       def getTime(self):
           """getTime"""
           #return self.bobobase_modification_time().ISO()
           if hasattr(self,'time'):
               return time.strftime("%Y-%m-%d %H:%M:%S",self.time)
       elif hasattr(self,'timefixed'):
           return self.timefixed
           else:
           setattr(self,'timefixed',self.bobobase_modification_time().ISO())
               return self.bobobase_modification_time().ISO()
   
   
   
       
   
       def download(self):
           """download and lock"""
           
           self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.getId())
       self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
         
           self.content_type="application/octet-stream"
           #self.REQUEST.RESPONSE.redirect(self.absolute_url())
           self.REQUEST.RESPONSE.write(self.index_html())
           #self.REQUEST.RESPONSE.write("bl")
           self.REQUEST.close()
       
       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="application/octet-stream"
           self.REQUEST.RESPONSE.redirect(self.absolute_url())
   
     def setVersionNumber(self,versionNumber):      def setVersionNumber(self,versionNumber):
         """set version"""          """set version"""
Line 103  class versionedFileObject(File): Line 347  class versionedFileObject(File):
         """get version"""          """get version"""
         return self.versionNumber          return self.versionNumber
   
      
               
     def lastEditor(self):      def lastEditor(self):
         """last Editor"""          """last Editor"""
           if hasattr(self,'author'):
               ret=self.author.replace("-","\n")
               ret=ret.replace("\r","\n")
               return ret
   
           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 369  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 387  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)
       self._getOb(id).time=time.localtime()
       
       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 407  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
   
       def getComment(self):
           """get the comment of this file"""
           if not hasattr(self,'comment') or (not self.comment) or (self.comment.lstrip()==""):
               return "Add comment"
   
           else:
               return self.comment
               
                   
     meta_type="versionedFile"      meta_type="versionedFile"
   
       def manageCommentForm(self):
           """add a comment"""
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addComment')).__of__(self)
           return pt()
   
       def manageComment(self,text,comment_author,submit,REQUEST=None):
           """manage comments"""
           if submit =='change':
               if text=='':
                   self.comment=None
               else:
                   self.comment=text
                   self.comment_author=comment_author
   
                   self.comment_date=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
   
           return REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url())
       
     def getLastVersion(self):      def getLastVersion(self):
         """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 176  class versionedFile(Folder): Line 461  class versionedFile(Folder):
         """main view"""          """main view"""
         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.bobobase_modification_time(),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())
                                                                                                                                                     
     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 478  class versionedFile(Folder):
   
     def history(self):      def history(self):
         """history"""          """history"""
         pt=PageTemplateFile('Products/versionedFile/zpt/versionHistory').__of__(self)  
           ext=self.ZopeFind(self.aq_parent,obj_ids=["history_template.html"])
           if ext:
               return getattr(self,ext[0][1].getId())()
           
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','versionHistory')).__of__(self)
         return pt()          return pt()
   
     def getVersions(self):      def getVersions(self):
Line 205  class versionedFile(Folder): Line 495  class versionedFile(Folder):
         ret.sort(sortv)          ret.sort(sortv)
         return ret          return ret
   
       security.declareProtected('AUTHENTICATED_USER','forceunlock')   
       def forceunlock(self,RESPONSE):
           """unlock"""
           self.lockedBy=''
                   
       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 524  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',newName='', RESPONSE=None):
         """add"""          """add"""
                   
         vC=self.REQUEST['vC']          vC=self.REQUEST['vC']
           author=self.REQUEST['author']
           
           if changeName=="yes":
               filename=file.filename
               self.title=filename[max(filename.rfind('/'),
                           filename.rfind('\\'),
                           filename.rfind(':'),
                           )+1:]
   
   
           if not newName=='':
               self.title=newName[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()))
           self.REQUEST.SESSION['objID_parent']=self.getId()
   
         if RESPONSE:          if RESPONSE:
               obj=self.ZopeFind(self,obj_ids=[id])[0][1]
               if obj.getSize()==0:
                   self.REQUEST.SESSION['objID']=obj.getId()
                   pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','errorUploadFile')).__of__(self)
                   return pt()
   
               else:
             RESPONSE.redirect(self.REQUEST['URL2'])              RESPONSE.redirect(self.REQUEST['URL2'])
   
           else:
               return self.ZopeFind(self,obj_ids=[id])[0][1]
           
     security.declareProtected('AUTHENTICATED_USER','downloadLocked')      security.declareProtected('AUTHENTICATED_USER','downloadLocked')
   
       def download(self):
           """download and lock"""
   
           self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.getLastVersion().getId())
       self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
         
           self.content_type="application/octet-stream"
           #self.REQUEST.RESPONSE.write("bl")
           self.REQUEST.RESPONSE.write(self.getLastVersion().index_html())
           self.REQUEST.close()
   
           #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 583  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):
     """interface for adding the OSAS_root"""      """interface for adding the OSAS_root"""
     pt=PageTemplateFile('Products/versionedFile/zpt/addVersionedFile.zpt').__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'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.1.1  
changed lines
  Added in v.1.34


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