--- cdli/cdli_files.py 2006/02/13 20:35:35 1.5 +++ cdli/cdli_files.py 2006/02/15 21:57:39 1.6 @@ -360,16 +360,22 @@ class CDLIBasketContainer(OrderedFolder) self.last=last return last - def setActiveBasket(self,basketId): + def setActiveBasket(self,basketId,REQUEST=None): """store active basketId in a cookie""" self.REQUEST.RESPONSE.setCookie("CDLIActiveBasket",basketId,path="/") - + if REQUEST: + REQUEST.RESPONSE.redirect(REQUEST['URL1']) + def getActiveBasket(self): """get active basket from cookie""" id= self.REQUEST.cookies.get('CDLIActiveBasket',None) - obj=getattr(self,id,None) + if id: + obj=getattr(self,str(id),None) + else: + obj=None return obj + def getActualUserName(self): """get name of the actualuser""" return str(self.REQUEST['AUTHENTICATED_USER']) @@ -381,26 +387,34 @@ class CDLIBasketContainer(OrderedFolder) ob=manage_addCDLIBasket(self,newBasketName) return ob - def storeInBasket(self,ids,submit,newBasketName=None,RESPONSE=None,REQUEST=None): + def storeInBasket(self,submit,ids=None,newBasketName=None,fromFileList=None,RESPONSE=None,REQUEST=None): """store it""" - + if not ids: + ids=self.REQUEST.SESSION['fileIds'] + if type(ids) is not ListType: ids=[ids] - if submit=="store in new basket": + if (submit.lower()=="store in new basket") or (submit.lower()=="new basket"): basketRet=self.addBasket(newBasketName) self.setActiveBasket(basketRet.getId()) basket=getattr(self,basketRet.getId()) - elif submit=="store in active basket": + elif (submit.lower()=="store in active basket") or (submit.lower()=="active basket"): basket=self.getActiveBasket() - - basket.addObjects(ids) - back=self.REQUEST['HTTP_REFERER'] - + + added=basket.addObjects(ids) + back=self.REQUEST['HTTP_REFERER'].split("?")[0]+"?basketName="+basket.title+"&numberOfObjects="+str(added) + + + if fromFileList: + return self.cdli_main.findObjectsFromList(list=self.REQUEST.SESSION['fileIds'],basketName=basket.title,numberOfObjects=added) + if RESPONSE: + RESPONSE.redirect(back) - + return True + def manage_addCDLIBasketContainerForm(self): """add the CDLIBasketContainer form""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addCDLIBasketContainer.zpt')).__of__(self) @@ -496,23 +510,23 @@ class CDLIBasket(Folder,CatalogAware): oldContent=[] newContent=[] - + added=0 for id in ids: founds=self.CDLICatalog.search({'title':id}) - print id,founds + for found in founds: if found.getObject() not in oldContent: #TODO: was passiert wenn, man eine Object dazufŸgt, das schon da ist aber eine neuere version newContent.append((found.getObject().getLastVersion(),found.getObject())) - + added+=1 content=oldContent+newContent user=self.getActualUserName() ob=manage_addCDLIBasketVersion(self,user,comment="",basketContent=content) - + return added def deleteObjects(self,ids,RESPONSE=None): """delete objects""" @@ -959,20 +973,39 @@ class CDLIFileFolder(versionedFileFolder RESPONSE.redirect(self.aq_parent.absolute_url()) - def findObjectsFromList(self,upload,RESPONSE): + def findObjectsFromList(self,upload=None,list=None,basketName=None,numberOfObjects=None,RESPONSE=None): """findObjectsFromList (, TAB oder LINE separated)""" - txt=upload.read() - txt=txt.replace(",","\n") - txt=txt.replace("\t","\n") - idsTmp=txt.split("\n") - ids=[] - for id in idsTmp: # make sure that no empty lines - idTmp=id.lstrip().rstrip() - if len(idTmp)>0: - ids.append(idTmp) - #self.REQUEST.SESSION['ids']=" OR ".join(ids) + if upload: # list from file upload + txt=upload.read() + txt=txt.replace(",","\n") + txt=txt.replace("\t","\n") + idsTmp=txt.split("\n") + ids=[] + for id in idsTmp: # make sure that no empty lines + idTmp=id.lstrip().rstrip() + if len(idTmp)>0: + + ids.append(idTmp) + + #self.REQUEST.SESSION['ids']=" OR ".join(ids) + + pt=getattr(self,'filelist.html') + return pt(search=ids) + if basketName: + pt=getattr(self,'filelist.html') + return pt(search=list,basketName=basketName,numberOfObjects=numberOfObjects) + + if list: # got already a list + ret=[] + for fileId in list: + if len(fileId.split("."))==1: + fileId=fileId+".atf" + + ret+=self.CDLICatalog({'title':fileId}) + self.REQUEST.SESSION['fileIds']=[x.getObject().getId() for x in ret]#store fieldIds in session for further usage + return ret - RESPONSE.redirect("filelist.html?path=%s"%" OR ".join(ids)) + #RESPONSE.redirect("filelist.html?path=%s"%" OR ".join(ids)) def createAllFilesAsSingleFile(self,RESPONSE=None): """download all files"""