Diff for /versionedFile/extVersionedFile.py between versions 1.15 and 1.38

version 1.15, 2007/11/23 17:52:34 version 1.38, 2011/12/05 07:42:38
Line 3  using the ExtFile Product, this version Line 3  using the ExtFile Product, this version
 DW 11.10.2006  DW 11.10.2006
 """  """
   
   import email
 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 142  class extVersionedFileFolder(Folder,ECHO Line 143  class extVersionedFileFolder(Folder,ECHO
         )          )
   
           
       def redirect(self,RESPONSE,url):
           """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen"""
           
           timeStamp=time.time()
           
           if url.find("?")>-1: #giebt es schon parameter
               addStr="&time=%s"
           else:
               addStr="?time=%s"
               
           RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')
           logging.error(email.Utils.formatdate()+' GMT')
           RESPONSE.redirect(url+addStr%timeStamp)
           
     def changeHistoryFileNamesForm(self):      def changeHistoryFileNamesForm(self):
         """change position of version num"""          """change position of version num"""
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeHistoryFileNamesForm.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeHistoryFileNamesForm.zpt')).__of__(self)
Line 412  class extVersionedFileFolder(Folder,ECHO Line 427  class extVersionedFileFolder(Folder,ECHO
             return cmp(x[1].title.lower(),y[1].title.lower())              return cmp(x[1].title.lower(),y[1].title.lower())
   
         def sortDate(x,y):          def sortDate(x,y):
       
             return cmp(y[1].getContentObject().getTime(),x[1].getContentObject().getTime())              return cmp(y[1].getContentObject().getTime(),x[1].getContentObject().getTime())
   
         def sortComment(x,y):          def sortComment(x,y):
Line 431  class extVersionedFileFolder(Folder,ECHO Line 447  class extVersionedFileFolder(Folder,ECHO
                 except:                  except:
                     xc='ZZZZZZZZZZZZZ'.lower()                      xc='ZZZZZZZZZZZZZ'.lower()
                                                           
                               
             if (yc=='') or (yc=='ZZZZZZZZZZZZZ'.lower()):              if (yc=='') or (yc=='ZZZZZZZZZZZZZ'.lower()):
                 try:                  try:
                     yc=y[1].getContentObject().getVComment().lower()                      yc=y[1].getContentObject().getVComment().lower()
                 except:                  except:
                     yc='ZZZZZZZZZZZZZ'.lower()                      yc='ZZZZZZZZZZZZZ'.lower()
                                                                           
                                       
             return cmp(xc,yc)              return cmp(xc,yc)
   
         def sortAuthor(x,y):          def sortAuthor(x,y):
                           
             return cmp(x[1].getContentObject().lastEditor().lower(),y[1].getContentObject().lastEditor().lower())              return cmp(x[1].getContentObject().lastEditor().lower(),y[1].getContentObject().lastEditor().lower())
                   
               
           def sortVersionComment(x,y):
            
                   return cmp(x[1].getContentObject().getVersionComment().lower(),y[1].getContentObject().getVersionComment().lower())
             
         versionedFiles=self.objectItems(self.file_meta_type)          versionedFiles=self.objectItems(self.file_meta_type)
         logging.debug("versionedfiles: %s of type %s"%(repr(versionedFiles),repr(self.file_meta_type)))          logging.debug("versionedfiles: %s of type %s"%(repr(versionedFiles),repr(self.file_meta_type)))
                   
Line 452  class extVersionedFileFolder(Folder,ECHO Line 475  class extVersionedFileFolder(Folder,ECHO
             versionedFiles.sort(sortDate)              versionedFiles.sort(sortDate)
         elif sortField=='author':          elif sortField=='author':
             versionedFiles.sort(sortAuthor)              versionedFiles.sort(sortAuthor)
           elif sortField=='versioncomment':
               versionedFiles.sort(sortVersionComment)
         elif sortField=='comment':          elif sortField=='comment':
             versionedFiles.sort(sortComment)              versionedFiles.sort(sortComment)
   
   
         return versionedFiles          return versionedFiles
   
   
Line 514  class extVersionedFileFolder(Folder,ECHO Line 540  class extVersionedFileFolder(Folder,ECHO
                   
         # get new extVersionedFile          # get new extVersionedFile
         vf = self._newVersionedFile(id,title=id)          vf = self._newVersionedFile(id,title=id)
         #if (getattr(self,'commentNonEmpty',0)==1) and vC.strip()=="":          logging.error("addFile id=%s vf=%s of %s"%(repr(id),repr(vf),repr(self)))
         # add file to this folder          # add its content (and don't index)
         self._setObject(id,vf)          self._setObject(id,vf)
         # add its content          vf=getattr(self,id)
         logging.info("ADD: %s"%repr(vf))  
         obj=vf.addContentObject(id,vC,author=author,file=file,content_type=content_type,from_tmp=isRealFile)          obj=vf.addContentObject(id,vC,author=author,file=file,content_type=content_type,from_tmp=isRealFile,index=False)
           # add file to this folder (this should do the indexing)
           #self._setObject(id,vf)
                   
           try:
         self.REQUEST.SESSION['objID']=vf.getId()          self.REQUEST.SESSION['objID']=vf.getId()
         self.REQUEST.SESSION['objID_parent']=None          self.REQUEST.SESSION['objID_parent']=None
           except:
               pass
   
         if obj.getSize()==0:          if obj.getSize()==0:
             pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','errorUploadFile')).__of__(self)              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','errorUploadFile')).__of__(self)
Line 611  class extVersionedFileObject(ExtFile): Line 642  class extVersionedFileObject(ExtFile):
         self.time = time          self.time = time
         self.author = author          self.author = author
   
       security.declareProtected('manage','changeObject')
       def changeObject(self,**args):
           """modify any of the objects attributes"""
           for arg in args:
               if hasattr(self, arg):
                   logging.debug("changeObject %s: %s=%s"%(repr(self),arg,args[arg]))
                   setattr(self, arg, args[arg])
   
     security.declarePublic('getTitle')      security.declarePublic('getTitle')
     def getTitle(self):      def getTitle(self):
Line 619  class extVersionedFileObject(ExtFile): Line 657  class extVersionedFileObject(ExtFile):
           
     def getData(self):      def getData(self):
         """returns object content (calls ExtFile.index_html)"""          """returns object content (calls ExtFile.index_html)"""
           #logging.debug("+++++++getData1:"+repr(self.get_filename()))
           filename = self.get_filename()
           #return ExtFile.index_html(self)
           try:
               logging.info("readfile:"+filename)
               return file(filename).read()
           except:
               logging.info("cannot readfile:"+filename)
         return ExtFile.index_html(self)          return ExtFile.index_html(self)
           
       
       def getFileName(self):
           """return filename"""
           return self.get_filename()
       
       def addToFile(self,filehandle):
           filehandle.write(self.getData())
           
       def addToFile2(self,filename):   
            str="cat %s > %s"%(self.get_filename(),filename)
            os.popen(str)
            
     security.declarePublic('getVComment')      security.declarePublic('getVComment')
     def getVComment(self):      def getVComment(self):
         """get the comment of this file"""          """get the comment of this file"""
Line 683  class extVersionedFileObject(ExtFile): Line 741  class extVersionedFileObject(ExtFile):
     #self.REQUEST.RESPONSE.setHeader("Content-Length","str(len(txt)+1000)")      #self.REQUEST.RESPONSE.setHeader("Content-Length","str(len(txt)+1000)")
                   
         self.content_type="application/octet-stream"          self.content_type="application/octet-stream"
         self.REQUEST.RESPONSE.redirect(self.absolute_url())          return self.getData()
           #self.REQUEST.RESPONSE.redirect(self.absolute_url())
         #txt=urllib.urlopen(self.absolute_url()).read()          #txt=urllib.urlopen(self.absolute_url()).read()
         #self.REQUEST.RESPONSE.write(txt)          #self.REQUEST.RESPONSE.write(txt)
           
   
         #self.REQUEST.close()          #self.REQUEST.close()
           
       view = download
       
     security.declareProtected('AUTHENTICATED_USER','downloadLocked')          security.declareProtected('AUTHENTICATED_USER','downloadLocked')    
     def downloadLocked(self):      def downloadLocked(self):
         """download and lock"""          """download and lock"""
           
           
         if repr(self.REQUEST['AUTHENTICATED_USER'])=='Anonymous User':          if repr(self.REQUEST['AUTHENTICATED_USER'])=='Anonymous User':
             return "please login first"              return "please login first"
         if not self.aq_parent.lockedBy=="":          if (not ((self.aq_parent.lockedBy=="") or (self.aq_parent.lockedBy==None))):
             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.aq_parent.lockedBy=self.REQUEST['AUTHENTICATED_USER']          self.aq_parent.lockedBy=self.REQUEST['AUTHENTICATED_USER']
   
Line 710  class extVersionedFileObject(ExtFile): Line 769  class extVersionedFileObject(ExtFile):
         return self.versionNumber          return self.versionNumber
   
     security.declarePublic('getVersionComment')                                                    security.declarePublic('getVersionComment')                                              
     def getVersionComment(self):    
         """get version"""  
         return self.versionComment  
   
     security.declarePublic('lastEditor')                                                      security.declarePublic('lastEditor')                                                
     def lastEditor(self):      def lastEditor(self):
Line 781  class extVersionedFile(CatalogAware,Fold Line 838  class extVersionedFile(CatalogAware,Fold
           
     security=ClassSecurityInfo()         security=ClassSecurityInfo()   
           
     def __init__(self, id, title, lockedBy,author):      def __init__(self, id, title, lockedBy,author,defaultAction='history'):
         """init"""          """init"""
         self.id=id          self.id=id
         self.title=title          self.title=title
         self.lockedBy=lockedBy          self.lockedBy=lockedBy
           if self.lockedBy is None:
               self.lockedBy = ''
         self.author=author          self.author=author
         self.lastVersionNumber=0          self.lastVersionNumber=0
         self.lastVersionId=None          self.lastVersionId=None
           self.defaultAction = defaultAction
   
     security.declarePublic('getTitle')      security.declarePublic('getTitle')
     def getTitle(self):      def getTitle(self):
Line 872  class extVersionedFile(CatalogAware,Fold Line 932  class extVersionedFile(CatalogAware,Fold
     def getLastChangeDate(self):      def getLastChangeDate(self):
         """get last change date"""          """get last change date"""
         lv=self.getContentObject()          lv=self.getContentObject()
           if lv:
         time=lv.getTime()          time=lv.getTime()
         return time          return time
           return None
           
     def getLastEditor(self):      def getLastEditor(self):
         """get last change date"""          """get last change date"""
Line 883  class extVersionedFile(CatalogAware,Fold Line 945  class extVersionedFile(CatalogAware,Fold
           
     def getLockedBy(self):      def getLockedBy(self):
         """get locked by"""          """get locked by"""
           if self.lockedBy is None:
               self.lockedBy = ''
         return str(self.lockedBy)          return str(self.lockedBy)
           
     def getLastVersionNumber(self):      def getLastVersionNumber(self):
Line 911  class extVersionedFile(CatalogAware,Fold Line 975  class extVersionedFile(CatalogAware,Fold
     security.declarePublic('getLastVersion')      security.declarePublic('getLastVersion')
     def getLastVersion(self):      def getLastVersion(self):
         """Last Version (old)"""          """Last Version (old)"""
         tmp=0  #        tmp=0
         lv=None  #        lv=None
           #        
         for v in self.objectValues(self.content_meta_type):  #        for v in self.objectValues(self.content_meta_type):
             logging.debug("getlastversion: check %s"%v.getId())  #            #logging.debug("getlastversion: check %s"%v.getId())
             if v.getVersionNumber() > tmp:  #            if v.getVersionNumber() > tmp:
                     tmp=v.getVersionNumber()  #                    tmp=v.getVersionNumber()
                     lv=v  #                    lv=v
           #        
         logging.debug("getlastversion: got %s"%lv.getId())  #        #ogging.debug("getlastversion: got %s"%lv.getId())
         return lv  #        return lv
           return self.getContentObject();
   
     def getContentObject(self):      def getContentObject(self):
         """returns the last version object"""          """returns the last version object"""
         if not hasattr(self, 'lastVersionId'):          if (not getattr(self, 'lastVersionId', None)) or (not getattr(self, self.lastVersionId, None)):
             # find last version and save it              # find last version and save it
             lv = self.findLastVersion()              lv = self.findLastVersion()
             if lv is None:              if lv is None:
                 return None                  return None
             self.lastVersionNumber = lv.getVersionNumber()              self.lastVersionNumber = lv.getVersionNumber()
             self.lastVersionId = lv.getId()              self.lastVersionId = lv.getId()
                       return getattr(self, self.lastVersionId, None)
         return getattr(self, self.lastVersionId)  
   
     security.declarePublic('getData')      security.declarePublic('getData')
     def getData(self):      def getData(self):
         """Returns the content of the last version"""          """Returns the content of the last version"""
           logging.debug("+++++++getData2")
         ob = self.getContentObject()          ob = self.getContentObject()
         if ob is not None:          if ob is not None:
             return ob.getData()              return ob.getData()
         else:          else:
             return None              return None
           
       security.declarePublic('view')
       def view(self,REQUEST=None,RESPONSE=None):
           """Returns the last version's view"""
           ob = self.getContentObject()
           if ob is not None:
               return ob.view(REQUEST=REQUEST,RESPONSE=RESPONSE)
           else:
               return None
       
     def diff(self,data):      def diff(self,data):
         """differenz between lastversion and data"""          """differenz between lastversion and data"""
         d=Differ()          d=Differ()
Line 965  class extVersionedFile(CatalogAware,Fold Line 1039  class extVersionedFile(CatalogAware,Fold
   
   
     security.declarePublic('index_html')      security.declarePublic('index_html')
     def index_html(self):      def index_html(self,REQUEST=None, RESPONSE=None):
         """main view"""          """main view"""
         #lastVersion=self.getContentObject()          #lastVersion=self.getContentObject()
         #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())
           act = getattr(self, 'defaultAction', 'history')
           if act == 'download':
               return self.getContentObject().download()
           elif act == 'view':
               #return self.getContentObject().download()
               return self.getContentObject().index_html(REQUEST=REQUEST, RESPONSE=RESPONSE)
           else:
         return self.history()          return self.history()
   
       def getVersionNr(self,nr):
           """get version with number nr"""
           tmp=0
           lastVersion=None
           logging.debug(self.absolute_url())
           for version in self.ZopeFind(self):
               logging.debug("getVersionNr :"+repr(version))
               logging.debug("nr:"+str(nr))
               if hasattr(version[1],'versionNumber'):
                   logging.debug("vn:"+repr(version[1].versionNumber))
                   if int(version[1].versionNumber) ==nr :
                       return version[1]
           logging.debug("nothing")
           return None
           
     security.declarePublic('getVersion')                                                    security.declarePublic('getVersion')                                              
     def getVersion(self):      def getVersion(self):
Line 1003  class extVersionedFile(CatalogAware,Fold Line 1098  class extVersionedFile(CatalogAware,Fold
         ret.sort(sortv)          ret.sort(sortv)
         return ret          return ret
   
       def getVersionList(self):
           """get a list of dicts with author, comment, filename, etc, of all versions"""
           vl = []
           for v in self.objectValues(self.content_meta_type):
               vl.append({'versionNumber':getattr(v,'versionNumber',0),
                         'title':v.getTitle(),
                         'id':v.getId(),
                         'date':v.getTime(),
                         'author':getattr(v,'author',''),
                         'comment':getattr(v,'versionComment','')
                         })
           return vl
   
     security.declareProtected('AUTHENTICATED_USER','forceunlock')         security.declareProtected('AUTHENTICATED_USER','forceunlock')   
     def forceunlock(self,RESPONSE=None):      def forceunlock(self,RESPONSE=None,user=None):
         """unlock"""          """unlock"""
         #safe who had the lock          #safe who had the lock
           logging.debug("extVersionFile: (forceunlock)"+str(user))
         if self.lockedBy:          if self.lockedBy:
               if user is not None:
                   if str(self.lockedBy)==user:
             self.brokenLock=str(self.lockedBy)              self.brokenLock=str(self.lockedBy)
                       self.lockedBy=''
         else:          else:
             self.brokenLock=""              self.brokenLock=""
               else:
                   self.brokenLock=str(self.lockedBy)
         self.lockedBy=''          self.lockedBy=''
           else:
               self.brokenLock=""
           
         return self.brokenLock          return self.brokenLock
   
     security.declareProtected('AUTHENTICATED_USER','unlock')         security.declareProtected('AUTHENTICATED_USER','unlock')   
Line 1024  class extVersionedFile(CatalogAware,Fold Line 1141  class extVersionedFile(CatalogAware,Fold
             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'])
                   
           
   
     def _newContentObject(self, id, title='', versionNumber=0, versionComment=None, time=None, author=None):      def _newContentObject(self, id, title='', versionNumber=0, versionComment=None, time=None, author=None):
         """factory for content objects. to be overridden in derived classes."""          """factory for content objects. to be overridden in derived classes."""
         return extVersionedFileObject(id,title,versionNumber=versionNumber,versionComment=versionComment,time=time,author=author)          return extVersionedFileObject(id,title,versionNumber=versionNumber,versionComment=versionComment,time=time,author=author)
   
   
     def addContentObject(self,id,vC,author=None,file=None,title='',changeName='no',newName='',from_tmp=False,      def addContentObject(self,id,vC,author=None,file=None,title='',changeName='no',newName='',from_tmp=False,index=True,
                          precondition='', content_type=''):                           precondition='', content_type=''):
         """add"""          """add"""
                   
Line 1078  class extVersionedFile(CatalogAware,Fold Line 1196  class extVersionedFile(CatalogAware,Fold
         self.lastVersionId = id          self.lastVersionId = id
                   
         #logging.debug("addcontentobject: lastversion=%s"%self.getData())          #logging.debug("addcontentobject: lastversion=%s"%self.getData())
           #logging.debug("addcontentobject: fob_data=%s"%fob.getData())
           if index and self.default_catalog:
         logging.debug("reindex1: %s in %s"%(repr(self),repr(self.default_catalog)))          logging.debug("reindex1: %s in %s"%(repr(self),repr(self.default_catalog)))
         self.reindex_object()          self.reindex_object()
         #logging.debug("addcontentobject: fob_data=%s"%fob.getData())  
                   
         return fob          return fob
                           
Line 1091  class extVersionedFile(CatalogAware,Fold Line 1210  class extVersionedFile(CatalogAware,Fold
                   
         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=='') or (self.lockedBy==None):
             ext=self.ZopeFind(self.aq_parent,obj_ids=["addNewVersion.dtml"])              ext=self.ZopeFind(self.aq_parent,obj_ids=["addNewVersion.dtml"])
             if ext:              if ext:
                 return ext[0][1]('',globals(),version=self.getVersion(),lastComment=self.getContentObject().getVersionComment(),AUTHENTICATED_USER=self.REQUEST.AUTHENTICATED_USER)                  return ext[0][1]('',globals(),version=self.getVersion(),lastComment=self.getContentObject().getVersionComment(),AUTHENTICATED_USER=self.REQUEST.AUTHENTICATED_USER)
Line 1123  class extVersionedFile(CatalogAware,Fold Line 1242  class extVersionedFile(CatalogAware,Fold
                 return pt()                  return pt()
   
             else:              else:
                 RESPONSE.redirect(self.REQUEST['URL2'])                  RESPONSE.redirect(self.absolute_url()+'/history')
         else:          else:
             return ob              return ob
   
   
     changeVersionedFileForm = PageTemplateFile('zpt/changeVersionedFile', globals())      changeVersionedFileForm = PageTemplateFile('zpt/changeVersionedFile', globals())
           
     def manage_changeVersionedFile(self,title,vC,author,comment):      def manage_changeVersionedFile(self,title,vC,author,comment,defaultAction='history',RESPONSE=None):
         """Change VersionedFile metadata"""          """Change VersionedFile metadata"""
         self.title = title          self.title = title
         self.author = author          self.author = author
           self.defaultAction = defaultAction
         cob = self.getContentObject()          cob = self.getContentObject()
         if cob:          if cob:
             if vC:              if vC:
Line 1144  class extVersionedFile(CatalogAware,Fold Line 1264  class extVersionedFile(CatalogAware,Fold
             else:              else:
                 cob.versionComment=comment                  cob.versionComment=comment
   
           if RESPONSE:
               RESPONSE.redirect('manage_main')
   
                   
     def download(self):      def download(self):
         """download"""          """download"""
         self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.getContentObject().getId())      
         self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")          txt=self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getContentObject().getId()+'/download'
         self.content_type="application/octet-stream"          
         self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getContentObject().getId())          self.REQUEST.RESPONSE.redirect(txt)
   
           
     security.declareProtected('AUTHENTICATED_USER','downloadLocked')          security.declareProtected('AUTHENTICATED_USER','downloadLocked')    
     def downloadLocked(self):      def downloadLocked(self):
Line 1158  class extVersionedFile(CatalogAware,Fold Line 1282  class extVersionedFile(CatalogAware,Fold
   
         if repr(self.REQUEST['AUTHENTICATED_USER'])=='Anonymous User':          if repr(self.REQUEST['AUTHENTICATED_USER'])=='Anonymous User':
             return "please login first"              return "please login first"
         if not self.lockedBy=="":          if not ((self.lockedBy=="") or (self.lockedBy==None)):
             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.getContentObject().content_type="application/octet-stream"          self.getContentObject().content_type="application/octet-stream"
Line 1191  def manage_addextVersionedFileForm(self) Line 1315  def manage_addextVersionedFileForm(self)
     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addextVersionedFile.zpt')).__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addextVersionedFile.zpt')).__of__(self)
     return pt()      return pt()
   
 def manage_addextVersionedFile(self,id,title,lockedBy, author=None, RESPONSE=None):  def manage_addextVersionedFile(self,id,title,lockedBy, author=None, defaultAction='history', RESPONSE=None):
     """add the OSAS_root"""      """add the OSAS_root"""
     newObj=extVersionedFile(id,title,lockedBy,author)      newObj=extVersionedFile(id,title,lockedBy,author,defaultAction=defaultAction)
     self._setObject(id,newObj)      self._setObject(id,newObj)
           
     if RESPONSE is not None:      if RESPONSE is not None:

Removed from v.1.15  
changed lines
  Added in v.1.38


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