--- cdli/cdli_files.py 2006/02/15 21:57:39 1.6 +++ cdli/cdli_files.py 2006/03/18 01:39:10 1.11 @@ -20,13 +20,13 @@ class Basket_old(Folder): def getObjUrl(self,objId): """getUrl""" - founds=self.CDLICatalog.search({'path':objId}) + 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({'path':splitted[1]}) + founds=self.CDLICatalog.search({'title':splitted[1]}) return founds[0].getObject().absolute_url()+'/'+objId def storeAllLink(self,results): @@ -142,7 +142,7 @@ class BasketObject_old(Folder): """addObjects""" for id in ids: - founds=self.CDLICatalog.search({'path':id}) + founds=self.CDLICatalog.search({'title':id}) for found in founds: if found.getObject() not in self.contents: tm=self.contents[0:] @@ -247,9 +247,10 @@ class CDLIBasketContainer(OrderedFolder) """contains the baskets""" - + security=ClassSecurityInfo() meta_type="CDLIBasketContainer" + def getBasketIdfromName(self,basketname): """get id from name""" @@ -258,8 +259,13 @@ class CDLIBasketContainer(OrderedFolder) return basket[0] else: None + + security.declareProtected('manage','uploadBasket_html') + def uploadBasket_html(self,basketId='0'): """upload an atf file, html form""" + + basketId=str(basketId) if not basketId=='0': basketName=getattr(self.basketContainer,basketId).title @@ -273,6 +279,9 @@ class CDLIBasketContainer(OrderedFolder) def index_html(self): """stanadard ansicht""" + + + ext=self.ZopeFind(self,obj_ids=["index.html"]) if ext: return ext[0][1]() @@ -407,6 +416,7 @@ class CDLIBasketContainer(OrderedFolder) if fromFileList: + return self.cdli_main.findObjectsFromList(list=self.REQUEST.SESSION['fileIds'],basketName=basket.title,numberOfObjects=added) if RESPONSE: @@ -660,7 +670,7 @@ class CDLIBasketVersion(SimpleItem): else: #assume version number splitted=objId.split("_") - founds=self.CDLICatalog.search({'path':splitted[1]}) + founds=self.CDLICatalog.search({'title':splitted[1]}) return founds[0].getObject().absolute_url()+'/'+objId def manage_addCDLIBasketVersion(self,user,comment="",basketContent=[],RESPONSE=None): @@ -734,10 +744,18 @@ class CDLIFile(versionedFile,CatalogAwar meta_type="CDLI file" default_catalog='CDLICatalog' - def isContainedInBaskets(self): - """check is this file is part of any basket""" - - return [x.getObject() for x in self.CDLIBasketCatalog.search({'getFileNamesInLastVersion':self.getId()})] + + + def isContainedInBaskets(self,context=None): + """check is this file is part of any basket + @param context: (optional) necessessary if CDLIBasketCatalog is not an (inherited) attribute of self, context.CDLIBasketCatalog + has to exist. + """ + + if not context: + context=self + + return [x.getObject() for x in context.CDLIBasketCatalog.search({'getFileNamesInLastVersion':self.getId()})] def addCDLIFileObjectForm(self): @@ -758,7 +776,7 @@ class CDLIFile(versionedFile,CatalogAwar except: pass - author=self.REQUEST['author'] + author=self.REQUEST.SESSION['author'] if changeName=="yes": filename=file.filename @@ -861,7 +879,7 @@ class CDLIFileFolder(versionedFileFolder ret=[] searchStr=" OR ".join(ids) - founds=self.CDLICatalog.search({'path':searchStr}) + founds=self.CDLICatalog.search({'title':searchStr}) for found in founds: lastVersion=found.getObject().getLastVersion() @@ -883,6 +901,12 @@ class CDLIFileFolder(versionedFileFolder errors=[] newPs=[] basketNameFromFile, numberOfFiles=splitatf(upload,dir) + + if basketId == '0': + basketObj=self.basketContainer.getActiveBasket() + if basketObj: + basketId=basketObj.getId() + if basketId == '0': basketNameFromId="" basketLen=0 @@ -933,10 +957,11 @@ class CDLIFileFolder(versionedFileFolder uploadFns=[] for fn in uploadFns: - founds=self.CDLICatalog.search({'path':fn}) + founds=self.CDLICatalog.search({'title':fn}) if len(founds)>0: - self.REQUEST['author']=str(self.REQUEST['AUTHENTICATED_USER']) - founds[0].getObject().manage_addCDLIFileObject('',comment,self.REQUEST['author'],file=file(os.path.join(self.REQUEST.SESSION['tmpdir'],fn))) + self.REQUEST.SESSION['author']=str(self.REQUEST['AUTHENTICATED_USER']) + + founds[0].getObject().manage_addCDLIFileObject('',comment,self.REQUEST.SESSION['author'],file=file(os.path.join(self.REQUEST.SESSION['tmpdir'],fn))) @@ -956,16 +981,19 @@ class CDLIFileFolder(versionedFileFolder unlockFns.append(x) for fn in unlockFns: - founds=self.CDLICatalog.search({'path':fn}) + founds=self.CDLICatalog.search({'title':fn}) if len(founds)>0: - self.REQUEST['author']=str(self.REQUEST['AUTHENTICATED_USER']) + self.REQUEST.SESSION['author']=str(self.REQUEST['AUTHENTICATED_USER']) founds[0].getObject().lockedBy="" if not (basketname ==''): - basketId=self.basketFolder.getBasketIdfromName(basketname) + basketId=self.basketContainer.getBasketIdfromName(basketname) - basket=getattr(self.basketFolder,basketId) + if not basketId: # create new basket + ob=self.basketContainer.addBasket(basketname) + basketId=ob.getId() + basket=getattr(self.basketContainer,str(basketId)) ids=os.listdir(self.REQUEST.SESSION['tmpdir']) basket.addObjects(ids,deleteOld=True) @@ -973,7 +1001,7 @@ class CDLIFileFolder(versionedFileFolder RESPONSE.redirect(self.aq_parent.absolute_url()) - def findObjectsFromList(self,upload=None,list=None,basketName=None,numberOfObjects=None,RESPONSE=None): + def findObjectsFromList(self,start=None,upload=None,list=None,basketName=None,numberOfObjects=None,RESPONSE=None): """findObjectsFromList (, TAB oder LINE separated)""" if upload: # list from file upload txt=upload.read() @@ -990,10 +1018,14 @@ class CDLIFileFolder(versionedFileFolder #self.REQUEST.SESSION['ids']=" OR ".join(ids) pt=getattr(self,'filelist.html') + self.REQUEST.SESSION['searchList']=ids return pt(search=ids) + if basketName: + #TODO: get rid of one of these.. + pt=getattr(self,'filelist.html') - return pt(search=list,basketName=basketName,numberOfObjects=numberOfObjects) + return pt(basketName=basketName,numberOfObjects=numberOfObjects) if list: # got already a list ret=[] @@ -1002,10 +1034,13 @@ class CDLIFileFolder(versionedFileFolder fileId=fileId+".atf" ret+=self.CDLICatalog({'title':fileId}) + #TODO: get rid of one of these.. self.REQUEST.SESSION['fileIds']=[x.getObject().getId() for x in ret]#store fieldIds in session for further usage + self.REQUEST.SESSION['searchList']=self.REQUEST.SESSION['fileIds'] return ret - #RESPONSE.redirect("filelist.html?path=%s"%" OR ".join(ids)) + if start: + RESPONSE.redirect("filelist.html?start:int="+str(start)) def createAllFilesAsSingleFile(self,RESPONSE=None): """download all files"""