--- cdli/cdli_files.py 2008/10/07 06:53:57 1.93 +++ cdli/cdli_files.py 2008/10/15 09:54:54 1.100 @@ -228,11 +228,22 @@ class BasketContent(SimpleItem): """content""" self.contentList=content[0:] - def getContent(self): + def getContent(self,filtered=True): """get content""" - - return self.contentList - + ret=[] + if filtered: + for x in self.contentList: + if not((x[0] is None) or (x[1] is None)): + ret.append(x) + return ret + + else: + return self.contentList + + def allContent(self): + """get all content""" + return self.getContent(filtered=False) + def setContent(self,content): self.contentList=content[0:] @@ -659,6 +670,10 @@ class CDLIBasketContainer(OrderedFolder) def deleteBaskets(self,ids=None): """delete baskets, i.e. move them into trash folder""" + if ids is None: + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','cdliError_html.zpt')).__of__(self) + txt="Sorry, no basket selected!" + return pt(txt=txt) found=self.ZopeFind(self,obj_ids=['trash']) @@ -670,19 +685,30 @@ class CDLIBasketContainer(OrderedFolder) if type(ids) is not ListType: ids=[ids] + logging.error("XERXON:"+repr(ids)) + if len(ids)==0: + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','cdliError_html.zpt')).__of__(self) + txt="Sorry, no basket selected!" + return pt(txt=txt) + cut=self.manage_cutObjects(ids) trash.manage_pasteObjects(cut) - + return None security.declareProtected('manage','manageBaskets') def manageBaskets(self,submit,ids=None,basket1="",basket2="",joinBasket="",subtractBasket="",REQUEST=None,RESPONSE=None): """manage baskets, delete or copy""" if submit=="delete": - self.deleteBaskets(ids) - + ret= self.deleteBaskets(ids) + if ret: + return ret elif submit=="join": flag,msg=self.joinBasket(joinBasket, ids) logging.info("joining %s %s"%(flag,msg)) - + if not flag: + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','cdliError_html.zpt')).__of__(self) + + return pt(txt=msg) + elif submit=="subtract": logging.info("BBBb %s %s"%(basket1,basket2)) flag,msg=self.subtractBasket(subtractBasket, basket1,basket2) @@ -821,6 +847,7 @@ class CDLIBasketContainer(OrderedFolder) @param basket2: see above """ + logging.info("CCCCC %s %s"%(basket1,basket2)) try: @@ -861,12 +888,16 @@ class CDLIBasketContainer(OrderedFolder) @param newbasket: name of the new basket @param oldbaskets: list of baskets to be joined """ + if oldBaskets is None: + return False, "No Baskets selected!" + try: newB=self.addBasket(newBasket) except: return False, "cannot create the new basket" newBasketContent={} + for ob in oldBaskets: x= getattr(self,ob,None) if x is None: @@ -1197,6 +1228,7 @@ class CDLIBasket(Folder,CatalogAware): def swap(x): return (x[1],x[0]) + logging.info("add to basket (%s)"%(repr(ids))) logging.info("add to basket (%s)"%(self.getId())) lastVersion=self.getLastVersion() @@ -1226,7 +1258,7 @@ class CDLIBasket(Folder,CatalogAware): #logging.debug("JJJJJJJ:"+repr(self.makelist(ids))) - if hasattr(self.cdliRoot,'v_tmpStore') and self.cdliRoot.v_tmpStore.has_key("hash"): + if hasattr(self.cdliRoot,'v_tmpStore') and self.cdliRoot.v_tmpStore.has_key("hash"): #TODO: muss eigentlich self.cdliRoot.v_tmpStore.has_key(hash): heissen (ohne "), erstmal so gesetzt damit der hash hier nie benutzt wird logging.debug("from store!") newContent=Set(map(swap,self.cdliRoot.v_tmpStore[hash])) @@ -1234,7 +1266,9 @@ class CDLIBasket(Folder,CatalogAware): logging.debug("not from store!") newContent=Set([(self.getFileObjectLastVersion(x),self.getFileObject(x)) for x in ids]) - + #remove all Elements which are not stored + if (None,None) in newContent: + newContent.remove((None,None)) content=Set(oldContent).union(newContent) added = len(content)-len(oldContent) if not username: @@ -1428,9 +1462,24 @@ class CDLIBasketVersion(Implicit,Persist self._v_downloadBasket[threadName]=thread logging.debug("dwonloadfinally:"+repr(self)) - basketID=self.aq_parent.aq_parent.getId() - versionNumber=self.aq_parent.getId() - + + if isinstance(self,CDLIBasketVersion): + obj=self + else: + obj=self.aq_parent + logging.debug("dwonloadfinally2:"+repr(obj)) + logging.debug("dwonloadfinally2:"+repr(obj.aq_parent)) + + obj2=obj.aq_parent + if not isinstance(obj2,CDLIBasket): + obj2=obj2.aq_parent + + basketID=obj2.getId() + versionNumber=obj.getId() + logging.debug("dwonloadfinally2:"+repr(basketID)) + logging.debug("dwonloadfinally2:"+repr(versionNumber)) + + if lock: logging.debug("-----start locking") for object in self.content.getContent(): @@ -2354,7 +2403,7 @@ class CDLIRoot(Folder): def getFileObjectLastVersion(self,fileId): """get an object""" x=self.v_files_lastVersion.get(fileId) - l#ogging.debug("lastVersion: "+repr(x)) + #logging.debug("lastVersion: "+repr(x)) return x def showFileIds(self):