--- cdli/DownloadBasket.py 2008/10/01 15:58:11 1.1 +++ cdli/DownloadBasket.py 2008/10/02 11:42:43 1.2 @@ -13,17 +13,21 @@ class DownloadBasketFinallyThread(Thread self.continueVar=True self.returnValue=None self.end=False + self.counter=0 # zaehlt wieviele Files schon gefunden wurden + + self.number=0 # Anzahl der Files im Basket 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.lock=lock - self.REQUEST=REQUEST + self.user=user self.basketID = basketID self.versionNumber = versionNumber self.serverport=serverport self.current=current logging.debug("download thread:set") + logging.debug("download thread:user"+repr(self.user)) def __call__(self): """call of the thread (equals run)""" @@ -44,7 +48,7 @@ class DownloadBasketFinallyThread(Thread baskets=self.ctx.ZopeFind(self.ctx,obj_metatypes=['CDLIBasket'],obj_ids=[self.basketID]) logging.error("---------download thread:run3") if len(baskets)!=1: - logging.error("ERROR: donwloadBasketcannot find basket:"+self.basketID) + logging.error("ERROR: downloadBasket: cannot find basket:"+self.basketID) self.end=True return @@ -53,7 +57,7 @@ class DownloadBasketFinallyThread(Thread 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 def getResult(self): @@ -61,6 +65,16 @@ class DownloadBasketFinallyThread(Thread 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"): """get the context within the ZODB""" @@ -73,42 +87,56 @@ class DownloadBasketFinallyThread(Thread req = HTTPRequest(None, env, resp) 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""" logging.debug("download thread") logging.debug("donwloadBasketasonefile: found basket:"+repr(basketVersion)) ret="" - i=0 + self.counter=0 #fh=file("/var/tmp/test","w") files=[] - for object in basketVersion.getContent(): - logging.error(i) - i+=1 + objects=basketVersion.getContent() + self.number=len(objects) + for object in objects: + + self.counter+=1 # logging.error("ret:"+repr(object[0])) # logging.error(" -"+repr(procedure)) -# #lockedBy=object[1].lockedBy - lockedBy="" + lockedBy=object[1].lockedBy +# lockedBy="" # logging.error(" -"+repr(lockedBy)) # - if (procedure=="downloadAll") or (lockedBy=='') or (lockedBy==self.REQUEST['AUTHENTICATED_USER']): - logging.error("ret1") + if (procedure=="downloadAll") or (lockedBy=='') or (lockedBy==user): + #logging.error("ret1") if current=="no": #version as they are in the basket - logging.error("ret2") + #logging.error("ret2") #object[0].addToFile2("/var/tmp/test2") #ret+=str(object[0].getData())+"\n" files.append(object[0].getFileName()) elif current=="yes": logging.error("ret3") #search current object - founds=self.CDLICatalog.search({'title':object[1].getId().split(".")[0]}) - if len(founds)>0: - ret+=str(founds[0].getObject().getLastVersion().getData())+"\n" + #founds=self.CDLICatalog.search({'title':object[1].getId().split(".")[0]}) + obj=self.ctx.getFileObjectLastVersion(object[1].getId()) + if obj: + files.append(obj.getFileName()) + else: + logging.error("donwloadBasketasonefile: don't know: "+repr(object[0].getId())) + #if len(founds)>0: + # ret+=str(founds[0].getObject().getLastVersion().getData())+"\n" - if lock and lockedBy=='': - object[1].lockedBy=self.REQUEST['AUTHENTICATED_USER'] + #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") # pin,pout =os.popen2("xargs cat") # logging.error("---------download thread:run6")