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

version 1.1, 2008/10/01 15:58:11 version 1.7, 2008/10/29 12:20:08
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 6  from ZPublisher.BaseRequest import Reque Line 5  from ZPublisher.BaseRequest import Reque
 import logging  import logging
 import os  import os
 import transaction  import transaction
   
   
   def correctFileName(filename):
       m1=filename[0:3]
       m2=filename[3:5]
       name=os.path.join("cdliRoot","cdlimain",m1,m2,filename)
       logging.debug("%s corrected zu name %s"%(filename,name))
       return name
   
 class DownloadBasketFinallyThread(Thread):  class DownloadBasketFinallyThread(Thread):
   
     def __init__(self):      def __init__(self):
Line 13  class DownloadBasketFinallyThread(Thread Line 21  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 56  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 65  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 73  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 95  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          logging.debug("got object in main call")
           self.number=len(objects)
           logging.debug("objects:"+repr(self.number))
           for object in objects:
                   obj=self.ctx.getFileObject(object[0])
                   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=obj.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())                      logging.debug("CURRENT YES")
                       files.append(obj.getVersionNr(object[1]).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[0])
                             ret+=str(founds[0].getObject().getLastVersion().getData())+"\n"                      if obj:
                                                 logging.debug("CURRENT NO")
                                 files.append(correctFileName(obj.getFileName()))
                 if lock and lockedBy=='':                      else:
                     object[1].lockedBy=self.REQUEST['AUTHENTICATED_USER']                          logging.error("downloadBasketasonefile: don't know: "+repr(object[0]))
                       #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],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 178  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.7


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