Diff for /cdli/DownloadBasket.py between versions 1.1 and 1.5

version 1.1, 2008/10/01 15:58:11 version 1.5, 2008/10/06 13:35:39
Line 1 Line 1
   
 from threading import Thread  from threading import Thread
 from ZPublisher.HTTPResponse import HTTPResponse  from ZPublisher.HTTPResponse import HTTPResponse
 from ZPublisher.HTTPRequest import HTTPRequest  from ZPublisher.HTTPRequest import HTTPRequest
Line 13  class DownloadBasketFinallyThread(Thread Line 12  class DownloadBasketFinallyThread(Thread
         self.continueVar=True          self.continueVar=True
         self.returnValue=None          self.returnValue=None
         self.end=False          self.end=False
           self.counter=0 # zaehlt wieviele Files schon gefunden wurden
       
           self.number=0 # Anzahl der Files im Basket
         Thread.__init__(self)          Thread.__init__(self)
   
     def set(self,lock,procedure,REQUEST,current,basketID,versionNumber,serverport="28080"):      def set(self,lock,procedure,user,current,basketID,versionNumber,serverport="28080"):
         self.procedure=procedure          self.procedure=procedure
         self.lock=lock          self.lock=lock
         self.REQUEST=REQUEST          self.user=user
         self.basketID = basketID          self.basketID = basketID
         self.versionNumber = versionNumber          self.versionNumber = versionNumber
         self.serverport=serverport          self.serverport=serverport
         self.current=current          self.current=current
         logging.debug("download thread:set")          logging.debug("download thread:set")
           logging.debug("download thread:user"+repr(self.user))
                 
     def __call__(self):      def __call__(self):
         """call of the thread (equals run)"""          """call of the thread (equals run)"""
Line 44  class DownloadBasketFinallyThread(Thread Line 47  class DownloadBasketFinallyThread(Thread
         baskets=self.ctx.ZopeFind(self.ctx,obj_metatypes=['CDLIBasket'],obj_ids=[self.basketID])          baskets=self.ctx.ZopeFind(self.ctx,obj_metatypes=['CDLIBasket'],obj_ids=[self.basketID])
         logging.error("---------download thread:run3")          logging.error("---------download thread:run3")
         if len(baskets)!=1:          if len(baskets)!=1:
             logging.error("ERROR: donwloadBasketcannot find basket:"+self.basketID)              logging.error("ERROR: downloadBasket: cannot find basket:"+self.basketID)
             self.end=True              self.end=True
             return              return
                   
Line 53  class DownloadBasketFinallyThread(Thread Line 56  class DownloadBasketFinallyThread(Thread
                   
         basketVersion=getattr(basket[1],self.versionNumber)          basketVersion=getattr(basket[1],self.versionNumber)
                   
         self.downloadObjectsAsOneFileFinally(self.lock,self.procedure,self.REQUEST,self.current,basketVersion)          self.downloadObjectsAsOneFileFinally(self.lock,self.procedure,self.user,self.current,basketVersion)
         self.end=True          self.end=True
                   
     def getResult(self):      def getResult(self):
Line 61  class DownloadBasketFinallyThread(Thread Line 64  class DownloadBasketFinallyThread(Thread
                   
         return self.result          return self.result
           
       def getCounter(self):
           """gibt den Counter zurueck, wieviele Objekte schon gefunden wurden"""
           logging.error("counter:"+repr(self.counter))
           return self.counter
       
   
       
       def getNumberOfFiles(self):
           """gibt anzahl zurueck"""
           return self.number;
     def getContext(self, app,serverport="8080"):      def getContext(self, app,serverport="8080"):
         """get the context within the ZODB"""          """get the context within the ZODB"""
                   
Line 73  class DownloadBasketFinallyThread(Thread Line 86  class DownloadBasketFinallyThread(Thread
         req = HTTPRequest(None, env, resp)          req = HTTPRequest(None, env, resp)
         return app.__of__(RequestContainer(REQUEST = req))          return app.__of__(RequestContainer(REQUEST = req))
                       
     def downloadObjectsAsOneFileFinally(self,lock=None,procedure=None,REQUEST=None,current="no",basketVersion=None):      def downloadObjectsAsOneFileFinally(self,lock=None,procedure=None,user=None,current="no",basketVersion=None):
         """print do the download"""          """print do the download"""
         logging.debug("download thread")          logging.debug("download thread")
       
         logging.debug("donwloadBasketasonefile: found basket:"+repr(basketVersion))          logging.debug("downloadBasketasonefile: found basket:"+repr(basketVersion))
         ret=""          ret=""
   
         i=0          self.counter=0
         #fh=file("/var/tmp/test","w")          #fh=file("/var/tmp/test","w")
         files=[]          files=[]
         for object in basketVersion.getContent():          lockedFiles=[]
                 logging.error(i)          objects=basketVersion.getContent()
                 i+=1          self.number=len(objects)
           logging.error("objects:"+repr(self.number))
           for object in objects:
          
                   self.counter+=1
 #                logging.error("ret:"+repr(object[0]))  #                logging.error("ret:"+repr(object[0]))
 #                logging.error("    -"+repr(procedure))  #                logging.error("    -"+repr(procedure))
 #                #lockedBy=object[1].lockedBy                  try:
                 lockedBy=""                      lockedBy=object[1].lockedBy
                   except:
                       logging.error("no object:"+repr(self.counter))
                       logging.error("no object:"+repr(object))
                       continue
               
   #                lockedBy=""
 #                logging.error("    -"+repr(lockedBy))  #                logging.error("    -"+repr(lockedBy))
 #                  #                
                 if (procedure=="downloadAll") or (lockedBy=='') or (lockedBy==self.REQUEST['AUTHENTICATED_USER']):                  
                     logging.error("ret1")                      #logging.error("ret1")
                     if current=="no": #version as they are in the basket                      if current=="no": #version as they are in the basket
                         logging.error("ret2")                      #logging.error("ret2")
                         #object[0].addToFile2("/var/tmp/test2")                          #object[0].addToFile2("/var/tmp/test2")
                         #ret+=str(object[0].getData())+"\n"                          #ret+=str(object[0].getData())+"\n"
                         files.append(object[0].getFileName())                          files.append(object[0].getFileName())
                     elif current=="yes":                      elif current=="yes":
                         logging.error("ret3")                      #logging.error("ret3")
                         #search current object                          #search current object
                         founds=self.CDLICatalog.search({'title':object[1].getId().split(".")[0]})                      #founds=self.CDLICatalog.search({'title':object[1].getId().split(".")[0]})
                         if len(founds)>0:                            obj=self.ctx.getFileObjectLastVersion(object[1].getId())
                             ret+=str(founds[0].getObject().getLastVersion().getData())+"\n"                      if obj:
                                                 files.append(obj.getFileName())
                             else:
                 if lock and lockedBy=='':                          logging.error("downloadBasketasonefile: don't know: "+repr(object[0].getId()))
                     object[1].lockedBy=self.REQUEST['AUTHENTICATED_USER']                      #if len(founds)>0:      
                         #  ret+=str(founds[0].getObject().getLastVersion().getData())+"\n"
                     
                   #falls die Datei gesperrit ist nimm sie in die Liste auf.
                   if not((procedure=="downloadAll") or (lockedBy=='') or (lockedBy==user)):
                       #logging.error("ret4")
                       lockedFiles.append((object[0].getId(),lockedBy))
         
                   #if lock and lockedBy=='':
                       #obj=self.ctx.getFileObject(object[1].getId())
                      # founds=self.ctx.CDLICatalog.search({'title':object[1].getId().split(".")[0]})
                      #if len(founds)>0:      
                             #founds[0].getObject().lockedBy=user
                         
                   #    object[1].lockedBy=user
                   #    transaction.get().commit()
                       #obj.lockedBy=user
 #        logging.error("---------download thread:run5")  #        logging.error("---------download thread:run5")
 #        pin,pout =os.popen2("xargs cat")  #        pin,pout =os.popen2("xargs cat")
 #        logging.error("---------download thread:run6")  #        logging.error("---------download thread:run6")
Line 126  class DownloadBasketFinallyThread(Thread Line 165  class DownloadBasketFinallyThread(Thread
         if not hasattr(self.ctx,'resultHash'):          if not hasattr(self.ctx,'resultHash'):
             self.ctx.resultHash={}              self.ctx.resultHash={}
         self.ctx.resultHash[self.getName()]=files          self.ctx.resultHash[self.getName()]=files
           
           if not hasattr(self.ctx,'resultLockedHash'):
               self.ctx.resultLockedHash={}
           self.ctx.resultLockedHash[self.getName()]=lockedFiles
           
         transaction.get().commit()          transaction.get().commit()
         self.conn.close()          self.conn.close()
         logging.error("---------download thread:run9")          logging.error("---------download thread:run9")

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


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