--- cdli/cdli_files.py 2008/10/01 15:58:11 1.87 +++ cdli/cdli_files.py 2008/10/06 12:57:12 1.91 @@ -1428,7 +1428,16 @@ class CDLIBasketVersion(Implicit,Persist logging.debug("dwonloadfinally:"+repr(self)) basketID=self.aq_parent.aq_parent.getId() versionNumber=self.aq_parent.getId() - self._v_downloadBasket[threadName].set(lock,procedure,REQUEST,current,basketID,versionNumber) + + if lock: + logging.debug("-----start locking") + for object in self.content.getContent(): + if object[1].lockedBy =='': + object[1].lockedBy=self.REQUEST['AUTHENTICATED_USER'] + logging.debug("-----finished locking") + + #obj.lockedBy=user + self._v_downloadBasket[threadName].set(lock,procedure,self.REQUEST['AUTHENTICATED_USER'],current,basketID,versionNumber) self._v_downloadBasket[threadName].start() @@ -1440,7 +1449,9 @@ class CDLIBasketVersion(Implicit,Persist return wait_template[0][1]() pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','downloadBasketWait.zpt')).__of__(self) - return pt(txt=self.absolute_url()+'/downloadObjectsAsOneFileFinally',threadName=threadName) + return pt(txt=self.absolute_url()+'/downloadObjectsAsOneFileFinally',threadName=threadName, + counter=self._v_downloadBasket[threadName].getCounter(), + number=self._v_downloadBasket[threadName].getNumberOfFiles()) #_v_xmltrans.run() else: @@ -1459,7 +1470,9 @@ class CDLIBasketVersion(Implicit,Persist return wait_template[0][1]() pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','downloadBasketWait.zpt')).__of__(self) - return pt(txt=self.absolute_url()+'/downloadObjectsAsOneFileFinally',threadName=threadName) + return pt(txt=self.absolute_url()+'/downloadObjectsAsOneFileFinally',threadName=threadName, + counter=self._v_downloadBasket[threadName].getCounter(), + number=self._v_downloadBasket[threadName].getNumberOfFiles()) else: @@ -1471,6 +1484,8 @@ class CDLIBasketVersion(Implicit,Persist #files = self._v_downloadBasket[threadName].result files=self.basketContainer.resultHash[threadName] + lockedFiles=self.basketContainer.resultLockedHash[threadName] + logging.error(files) # fh=file("/var/tmp/test") #ret =fh.read() @@ -1488,12 +1503,25 @@ class CDLIBasketVersion(Implicit,Persist self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") #length=len(ret) #self.REQUEST.RESPONSE.setHeader("Content-Length",length) + ret="#basket: %s\n"%basket_name - self.REQUEST.RESPONSE.write(ret) + self.REQUEST.RESPONSE.write(ret) + for fileName in files: + try: self.REQUEST.RESPONSE.write(file(fileName).read()) - + except: + logging.error("downloadasonefile: cannot read %s"%fileName) + + + self.REQUEST.RESPONSE.write("\n# locked files\n") + for fileName in lockedFiles: + self.REQUEST.RESPONSE.write("# %s\n"%fileName) + + self.REQUEST.RESPONSE.write("# locked files end\n") + del self.basketContainer.resultHash[threadName] + del self.basketContainer.resultLockedHash[threadName] def numberOfItems(self): """return anzahl der elemente im basket""" @@ -1597,6 +1625,10 @@ class CDLIFileObject(CatalogAware,extVer """Return cataloguable key for ourselves.""" return str(self) + def setAuthor(self, author): + """change the author""" + self.author = author + def makeThisVersionCurrent_html(self): """form for mthis version current"""