--- cdli/cdli_files.py 2006/02/02 19:19:24 1.4 +++ cdli/cdli_files.py 2006/02/13 20:35:35 1.5 @@ -250,7 +250,14 @@ class CDLIBasketContainer(OrderedFolder) meta_type="CDLIBasketContainer" - + def getBasketIdfromName(self,basketname): + """get id from name""" + + for basket in self.ZopeFind(self,obj_metatypes=["CDLIBasket"]): + if basket[1].title==basketname: + return basket[0] + else: + None def uploadBasket_html(self,basketId='0'): """upload an atf file, html form""" basketId=str(basketId) @@ -408,10 +415,11 @@ def manage_addCDLIBasketContainer(self,i if RESPONSE is not None: RESPONSE.redirect('manage_main') -class CDLIBasket(Folder): +class CDLIBasket(Folder,CatalogAware): """basket""" meta_type="CDLIBasket" + default_catalog="CDLIBasketCatalog" def getFile(self,obj): return obj[1] @@ -419,6 +427,11 @@ class CDLIBasket(Folder): def getFileLastVersion(self,obj): return obj[0] + def getFileNamesInLastVersion(self): + """get content of the last version as list""" + + return [x[1].getId() for x in self.getLastVersion().getContent()] + def isActual(self,obj): """teste ob im basket die aktuelle version ist""" actualNo=obj[1].getLastVersion().getVersionNumber() @@ -706,7 +719,24 @@ 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 addCDLIFileObjectForm(self): + """add a new version""" + + if str(self.REQUEST['AUTHENTICATED_USER']) in ["Anonymous User"]: + return "please login first" + if (self.lockedBy==self.REQUEST['AUTHENTICATED_USER']) or (self.lockedBy==''): + out=DTMLFile('dtml/fileAdd', globals(),Kind='CDLIFileObject',kind='CDLIFileObject',version=self.getVersion()).__of__(self) + return out() + else: + return "Sorry file is locked by somebody else" + def manage_addCDLIFileObject(self,id,vC,author,file='',title='',precondition='', content_type='',changeName='no',newName='', RESPONSE=None): """add""" try: #TODO: der ganze vC unsinn muss ueberarbeitet werden @@ -785,6 +815,7 @@ def splitatf(fh,dir=None): #check if basket name is in the first line if line.find("#atf basket")>=0: ret=line.replace('#atf basket ','') + ret=ret.split('_')[0] else: if (len(line.lstrip())>0) and (line.lstrip()[0]=="&"): #newfile if nf: @@ -800,7 +831,7 @@ def splitatf(fh,dir=None): nf.close() fh.close() - return ret.split('_')[0],len(os.listdir(dir)) + return ret,len(os.listdir(dir)) class CDLIFileFolder(versionedFileFolder): """CDLI File Folder""" @@ -873,7 +904,7 @@ class CDLIFileFolder(versionedFileFolder return pt(changed=changed,errors=errors,dir=dir,newPs=newPs,basketLen=basketLen,numberOfFiles=numberOfFiles, basketNameFromId=basketNameFromId,basketNameFromFile=basketNameFromFile,basketId=basketId) - def uploadATFfinally(self,procedure,comment="",basketId='0',unlock=None,RESPONSE=None): + def uploadATFfinally(self,procedure,comment="",basketname='',unlock=None,RESPONSE=None): """upload the files""" if procedure=="uploadchanged": @@ -917,7 +948,9 @@ class CDLIFileFolder(versionedFileFolder founds[0].getObject().lockedBy="" - if not (basketId =='0'): + if not (basketname ==''): + basketId=self.basketFolder.getBasketIdfromName(basketname) + basket=getattr(self.basketFolder,basketId) ids=os.listdir(self.REQUEST.SESSION['tmpdir']) basket.addObjects(ids,deleteOld=True)