Diff for /cdli/cdli_files.py between versions 1.1 and 1.2

version 1.1, 2005/11/03 01:47:58 version 1.2, 2005/11/28 12:31:56
Line 1 Line 1
 """CDLI extensions of the filearchive"""  """CDLI extensions of the filearchive"""
 from Products.versionedFile.versionedFile import *  from Products.versionedFile.versionedFile import *
 from Products.ZCatalog.CatalogPathAwareness import CatalogAware  from Products.ZCatalog.CatalogPathAwareness import CatalogAware
 from tempfile import mkstemp  from tempfile import mkstemp,mkdtemp
 import os.path  import os.path
 import os  import os
 from types import *  from types import *
Line 112  def manage_addBasket(self,id,title,RESPO Line 112  def manage_addBasket(self,id,title,RESPO
 class BasketObject(Folder):  class BasketObject(Folder):
     """Basket Object"""      """Basket Object"""
           
       meta_type="basketObject"
     def __init__(self):      def __init__(self):
             """init basket object"""              """init basket object"""
             self.contents=[]              self.contents=[]
Line 151  class BasketObject(Folder): Line 152  class BasketObject(Folder):
                 RESPONSE.redirect(self.absolute_url())                  RESPONSE.redirect(self.absolute_url())
   
   
       def unlockTest(self):
           """unlock all files of the testuser for debuggin"""
           for object in self.contents:
   
                   if str(object.lockedBy)=="test":
                       object.lockedBy=""
     
     def downloadObjectsAsOneFile(self,REQUEST):      def downloadObjectsAsOneFile(self,lock=None,procedure=None,REQUEST=None):
         """download all selected files in one file"""          """download all selected files in one file"""
           
         ret=""          ret=""
           lockedObjects={}
           
   
           if lock:
               
               if str(self.REQUEST['AUTHENTICATED_USER'])=='Anonymous User':
                   
                   return "please login first"
   
               #check if a locked object exist in the basket.
               lockedObjects={}
               for object in self.contents:
   
                   if not object.lockedBy=="":
                       lockedObjects[object.title]=repr(object.lockedBy)
                      
                       
               keys=lockedObjects.keys()
               
               
               if len(keys)>0 and (not procedure):
                   self.REQUEST.SESSION['lockedObjects']=lockedObjects
                   pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','lockedObjects.zpt')).__of__(self)
                   return pt()
            
               elif not procedure: #keine fails gesperrt dann alle donwloaden
                   procedure="downloadAll" 
           
           print procedure    
         for object in self.contents:          for object in self.contents:
   
                   if (procedure=="downloadAll") or (object.lockedBy=='') or (object.lockedBy==self.REQUEST['AUTHENTICATED_USER']):
                 ret+=object.getLastVersion().data                  ret+=object.getLastVersion().data
                   
                   if lock and object.lockedBy=='':
                       object.lockedBy=self.REQUEST['AUTHENTICATED_USER']
   
   
         self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="basket_%s.atf" """%self.getId())          self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="basket_%s.atf" """%self.getId())
         self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")          self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
         len=len(ret)          length=len(ret)
         self.REQUEST.RESPONSE.setHeader("Content-Length",len)          self.REQUEST.RESPONSE.setHeader("Content-Length",length)
         self.REQUEST.RESPONSE.write(ret)              self.REQUEST.RESPONSE.write(ret)    
           
           
 def manage_addBasketObjectForm(self):  def manage_addBasketObjectForm(self):
     """add form"""      """add form"""
     pass      pass
Line 249  def manage_addCDLIFileObject(self,id,vC= Line 293  def manage_addCDLIFileObject(self,id,vC=
         REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main')          REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main')
   
   
   def splitatf(fh,dir=None):
       """split it"""
       
       nf=None
       for line in fh.readlines():
          
           if (len(line.lstrip())>0) and (line.lstrip()[0]=="&"): #newfile
               if nf:
                   nf.close() #close last file
           
               
               filename=line[1:].split("=")[0].rstrip()+".atf"
               if dir:
                   filename=os.path.join(dir,filename)
               nf=file(filename,"w")
               
           nf.write(line)
       
       nf.close()
       fh.close()
       
 class CDLIFileFolder(versionedFileFolder):  class CDLIFileFolder(versionedFileFolder):
     """CDLI folder"""      """CDLI folder"""
           
Line 257  class CDLIFileFolder(versionedFileFolder Line 322  class CDLIFileFolder(versionedFileFolder
     folderMetaType=['CDLI Folder']      folderMetaType=['CDLI Folder']
     default_catalog='CDLICatalog'      default_catalog='CDLICatalog'
           
     def uploadATF(self,upload,RESPONSE):      def uploadATF(self,upload,comment="",RESPONSE=None):
         """upload an atf file"""          """upload an atf file"""
         mks          #TODO: finish uploadATF
           dir=mkdtemp()
           changed=[]
           errors=[]
           splitatf(upload,dir)
   
           for fn in os.listdir(dir):
               founds=self.CDLICatalog.search({'path':fn})    
       
               for found in founds:
                   obj=found.getObject()
          
                   if (not obj.lockedBy=='') and (not obj.lockedBy==self.REQUEST['AUTHENTICATED_USER']):
                       errors.append(obj)
                   else:
                       data=file(os.path.join(dir,fn)).read()
                       diffs=obj.diff(data)
                       if diffs[0]>0:
                           changed.append((obj,diffs))
                           #hochladen
           
           
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','uploadCheck.zpt')).__of__(self)
           return pt(changed=changed,errors=errors,dir=dir)
                       
                   
                   
     def findObjectsFromList(self,upload,RESPONSE):      def findObjectsFromList(self,upload,RESPONSE):

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


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