--- cdli/DownloadBasket.py 2008/10/06 12:26:57 1.4 +++ cdli/DownloadBasket.py 2008/11/05 19:53:32 1.8 @@ -5,6 +5,15 @@ from ZPublisher.BaseRequest import Reque import logging import os import transaction +import pickle + +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): def __init__(self): @@ -85,12 +94,13 @@ class DownloadBasketFinallyThread(Thread } req = HTTPRequest(None, env, resp) return app.__of__(RequestContainer(REQUEST = req)) - + + 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)) + logging.debug("downloadBasketasonefile: found basket:"+repr(basketVersion)) ret="" self.counter=0 @@ -98,15 +108,16 @@ class DownloadBasketFinallyThread(Thread files=[] lockedFiles=[] objects=basketVersion.getContent() + logging.debug("got object in main call") self.number=len(objects) - logging.error("objects:"+repr(self.number)) + 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(" -"+repr(procedure)) try: - lockedBy=object[1].lockedBy + lockedBy=obj.lockedBy except: logging.error("no object:"+repr(self.counter)) logging.error("no object:"+repr(object)) @@ -115,28 +126,31 @@ class DownloadBasketFinallyThread(Thread # lockedBy="" # logging.error(" -"+repr(lockedBy)) # - if (procedure=="downloadAll") or (lockedBy=='') or (lockedBy==user): - logging.error("ret1") - if current=="no": #version as they are in the basket - 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]}) - 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" - - else: - logging.error("ret4") - lockedFiles.append(object[0].getId()) + + #logging.error("ret1") + if current=="no": #version as they are in the basket + #logging.error("ret2") + #object[0].addToFile2("/var/tmp/test2") + #ret+=str(object[0].getData())+"\n" + logging.debug("CURRENT YES") + files.append(obj.getVersionNr(object[1]).getFileName()) + elif current=="yes": + #logging.error("ret3") + #search current object + #founds=self.CDLICatalog.search({'title':object[1].getId().split(".")[0]}) + obj=self.ctx.getFileObjectLastVersion(object[0]) + if obj: + logging.debug("CURRENT NO") + files.append(correctFileName(obj.getFileName())) + else: + 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],str(lockedBy))) #if lock and lockedBy=='': #obj=self.ctx.getFileObject(object[1].getId()) @@ -161,14 +175,23 @@ class DownloadBasketFinallyThread(Thread # fw.write(pout.read()) # fw.close() - if not hasattr(self.ctx,'resultHash'): - self.ctx.resultHash={} - self.ctx.resultHash[self.getName()]=files +# if not hasattr(self.ctx,'resultHash'): +# logging.debug("-------------create hash") +# self.ctx.resultHash={} + logging.debug("-------------writing hash: %s"%self.getName()) + #self.ctx.resultHash[self.getName()]=files + o1 = file("/tmp/"+self.getName(),'w') + pickle.dump(files, o1) + o1.close() + transaction.get().commit() if not hasattr(self.ctx,'resultLockedHash'): self.ctx.resultLockedHash={} - self.ctx.resultLockedHash[self.getName()]=lockedFiles - + #self.ctx.resultLockedHash[self.getName()]=lockedFiles + o2 = file("/tmp/"+self.getName()+'_lockedFiles','w') + + pickle.dump(lockedFiles, o2) + o2.close() transaction.get().commit() self.conn.close() logging.error("---------download thread:run9")