--- cdli/cdli_files.py 2007/02/02 14:31:49 1.62 +++ cdli/cdli_files.py 2007/02/05 15:23:46 1.63 @@ -219,7 +219,7 @@ class uploadATFfinallyThread(Thread): founds=ctx2.CDLICatalog.search({'title':fn}) if len(founds)>0: SESSION['author']=str(username) - self.result+="

Changing : %s"%fn + self.result="

Changing : %s"%fn+self.result founds[0].getObject().manage_addCDLIFileObject('',comment,SESSION['author'],file=os.path.join(SESSION['tmpdir'],fn),from_tmp=True) if i==200: i=0 @@ -232,7 +232,7 @@ class uploadATFfinallyThread(Thread): newPs=SESSION['newPs'] if len(newPs)>0: tmpDir=SESSION['tmpdir'] - self.result+="

Adding files

" + self.result="

Adding files

"+self.result #TODO: make this configurable, at the moment base folder for the files has to be cdli_main ctx2.importFiles(comment=comment,author=str(username) ,folderName=tmpDir, files=newPs,ext=self) @@ -241,7 +241,7 @@ class uploadATFfinallyThread(Thread): #unlock locked files? if unlock: - self.result+="

Unlock files

" + self.result="

Unlock files

"+self.result unlockFns=[] for x in os.listdir(SESSION['tmpdir']): if not x in SESSION['errors']: @@ -256,7 +256,7 @@ class uploadATFfinallyThread(Thread): #if a basketname is give, add files to the basket if not (basketname ==''): - self.result+="

Add basket

" + self.result="

Add basket

"+self.result basketId=ctx2.basketContainer.getBasketIdfromName(basketname) if not basketId: # create new basket @@ -328,7 +328,11 @@ class uploadATFThread(Thread): app = root['Application'] ctx = self.getContext(app,serverport=self.serverport) logging.info("run intern") - ctx.temp_folder._setObject(idTmp,tmpStore(idTmp)) + try: + ctx.temp_folder._setObject(idTmp,tmpStore(idTmp)) + except: + logging.error("thread upload: %s %s"%sys.exc_info()[0:2]) + logging.info("call thread intern") self.uploadATFThread(ctx,self.upload,idTmp,self.basketId) @@ -396,7 +400,7 @@ class uploadATFThread(Thread): #start to check the files for fn in os.listdir(dir): - self.result+="

process:%s

"%fn + self.result="

process:%s

"%fn+self.result # check if file is in the catalog #TODO: checkCatalog is not implemented yet @@ -424,7 +428,7 @@ class uploadATFThread(Thread): obj=found.getObject() if (not (str(obj.lockedBy))=='') and (not (str(obj.lockedBy)==str(self.username))): - lockerrors.append(fn) + lockerrors.append((fn,str(obj.lockedBy))) else: diffs=obj.diff(data) @@ -449,256 +453,11 @@ class uploadATFThread(Thread): #stObj.returnValue['changed']=copy.copy(changed) stObj.returnValue['changed']=[(x[0].getId(),x[1][0]) for x in changed] #stObj.returnValue['lockerrors']=[x[0].getId() for x in lockerrors] - print lockerrors - stObj.returnValue['lockerrors']=[x for x in lockerrors] + stObj.returnValue['lockerrors']=[x for x in lockerrors] self.returnValue=True #ctx2.cdli_main.setTemp('v_uploadATF_returnValue',True) - -class Basket_old(Folder): - """shopping basket - alte fassung """ - - meta_type="Basket" - _v_stack={} - - def getObjUrl(self,objId): - """getUrl""" - founds=self.CDLICatalog.search({'title':objId}) - if len(founds)>0: - return founds[0].getObject().absolute_url() - - else: #assume version number - splitted=objId.split("_") - founds=self.CDLICatalog.search({'title':splitted[1]}) - return founds[0].getObject().absolute_url()+'/'+objId - - def storeAllLink(self,results): - """erzeuge link zum speicher aller results""" - nr=self.REQUEST['_ZopeId'] - - if results: - self._v_stack[nr]=[x.getObject().getId() for x in results] - - return self.absolute_url()+"/storeAll?id="+nr - - def storeAll(self,id): - """store all""" - try: - results=self._v_stack[id] - except: - #TODO: write expired page - return "expired" - - return self.storeInBasketForm(results) - - def storeInBasketForm(self,ids): - """ store an object form""" - - if type(ids) is not ListType: - ids=[ids] - self.REQUEST.SESSION['ids']=ids[0:] - - self.REQUEST.SESSION['BACKLINK']=self.REQUEST['HTTP_REFERER'] - - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','storeBasketObject.zpt')).__of__(self) - return pt() - - def storeInBasket(self,username,ids=None,RESPONSE=None,REQUEST=None): - """store it""" - - if not ids: - ids=REQUEST.SESSION['ids'] - - self.REQUEST.SESSION['basketUser']=username - - baskets=self.ZopeFind(self,obj_ids=[username]) - if len(baskets)>0: - basket=baskets[0][1] - else: - manage_addBasketObject(self,username) - basket=self._getOb(username) - - - basket.addObjects(ids) - back=self.REQUEST.SESSION.get('BACKLINK', None) - - if RESPONSE: - RESPONSE.redirect(back) - - - - def showBasket(self,user=None,set=None,RESPONSE=None): - """show the basket""" - - if user: - self.REQUEST.SESSION['basketUser']=user - - if not user and not set: - user=self.REQUEST.SESSION.get('basketUser',None) - - if not user: - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','orizeBasketUser.zpt')).__of__(self) - return pt() - else: - baskets=self.ZopeFind(self,obj_ids=[user]) - - - if len(baskets)>0: - RESPONSE.redirect(baskets[0][1].absolute_url()) - return True - else: - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','emptyBasket.zpt')).__of__(self) - return pt() - - -def manage_addBasket_oldForm(self): - """add the basket form""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasket.zpt')).__of__(self) - return pt() - -def manage_addBasket_old(self,id,title,RESPONSE=None): - """add the basket""" - ob=Basket() - - ob.id=str(id) - ob.title=title - self._setObject(id, ob) - ob=self._getOb(id) - - if RESPONSE is not None: - RESPONSE.redirect('manage_main') - - -class BasketObject_old(Folder): - """Basket Object - alte fassung""" - - meta_type="basketObject" - def __init__(self): - """init basket object""" - self.contents=[] - - def numberOfItems(self): - """return anzahl der elemente im basket""" - num=len(self.contents) - - return num - - def addObjects(self,ids): - """addObjects""" - - for id in ids: - founds=self.CDLICatalog.search({'title':id}) - for found in founds: - if found.getObject() not in self.contents: - tm=self.contents[0:] - tm.append(found.getObject()) - self.contents=tm[0:] - - return True - - def index_html(self): - """view the basket""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','basketObject_index_html.zpt')).__of__(self) - return pt() - - def deleteObjects(self,ids,RESPONSE=None): - """delete objects""" - list = self.contents[0:] - for content in list: - - if content.getId() in ids: - self.contents.remove(content) - - - if RESPONSE: - RESPONSE.redirect(self.absolute_url()) - - - def unlockTest(self): - """unlock all files of the testuser for debuggin""" - for object in self.contents: - - if str(object.lockedBy)=="dahl": - object.lockedBy="" - - def downloadObjectsAsOneFile(self,lock=None,procedure=None,REQUEST=None): - """download all selected files in one file""" - - ret="" - lockedObjects={} - - if self.temp_folder.downloadCounter > 10: - return """I am sorry, currently the server has to many requests for downloads, please come back later!""" - - - if lock: - - if str(self.REQUEST['AUTHENTICATED_USER'])=='Anonymous User': - - return "please login first" - - #check if a locked object exist in the basket. - lockedObjects={} - for object in self.contents: - - if not object.lockedBy=="": - lockedObjects[object.title]=repr(object.lockedBy) - - - keys=lockedObjects.keys() - - - if len(keys)>0 and (not procedure): - self.REQUEST.SESSION['lockedObjects']=lockedObjects - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','lockedObjects.zpt')).__of__(self) - return pt() - - elif not procedure: #keine fails gesperrt dann alle donwloaden - procedure="downloadAll" - - self.temp_folder.downloadCounter+=1 - self._p_changed=1 - - transaction.get().commit() - - for object in self.contents: - - if (procedure=="downloadAll") or (object.lockedBy=='') or (object.lockedBy==self.REQUEST['AUTHENTICATED_USER']): - ret+=object.getLastVersion().getData() - - if lock and object.lockedBy=='': - object.lockedBy=self.REQUEST['AUTHENTICATED_USER'] - - - self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="basket_%s.atf" """%self.getId()) - self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") - length=len(ret) - self.REQUEST.RESPONSE.setHeader("Content-Length",length) - self.REQUEST.RESPONSE.write(ret) - self.temp_folder.downloadCounter-=1 - self._p_changed=1 - transaction.get().commit() - - - -def manage_addBasket_oldObjectForm(self): - """add form""" - pass - -def manage_addBasket_oldObject(self,id,title='',RESPONSE=None): - """add""" - - ob=BasketObject() - - ob.id=str(id) - ob.title=title - self._setObject(id, ob) - ob=self._getOb(id) - - if RESPONSE is not None: - RESPONSE.redirect('manage_main') - - + class CDLIBasketContainer(OrderedFolder): """contains the baskets""" @@ -1238,7 +997,7 @@ class CDLIBasketVersion(Implicit,Persist lockedObjects={} for object in self.content.getContent(): - if not object[1].lockedBy=="": + if (not str(object[1].lockedBy)=="") and (not (str(object[1].lockedBy)==str(self.REQUEST['AUTHENTICATED_USER']))): lockedObjects[object[1].title]=repr(object[1].lockedBy)