version 1.1, 2008/10/01 15:58:11
|
version 1.3, 2008/10/06 10:46:46
|
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("donwloadBasketasonefile: 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(): |
objects=basketVersion.getContent() |
logging.error(i) |
self.number=len(objects) |
i+=1 |
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']): |
if (procedure=="downloadAll") or (lockedBy=='') or (lockedBy==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("donwloadBasketasonefile: 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" |
|
|
|
|
|
#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") |