--- cdli/cdli_basket.py 2011/07/20 09:33:35 1.6 +++ cdli/cdli_basket.py 2011/07/21 21:58:50 1.7 @@ -82,7 +82,12 @@ class BasketContent(SimpleItem): for x in content: if not((x[0] is None) or (x[1] is None)): - contentList.append((x[1].getId(),x[0].getVersionNumber())) + try: # old version + contentList.append((x[1].getId(),x[0].getVersionNumber())) + except: + contentList.append(x) + + logging.debug("cl: %s"%contentList) self.contentList=contentList[0:] @@ -1015,8 +1020,10 @@ class CDLIBasket(Folder,CatalogAware): return versions - def updateObjects(self,ids,RESPONSE=None,REQUEST=None): - """update ids, ids not in the basket the add""" + def updateObjects(self,ids=[],RESPONSE=None,REQUEST=None): + """update ids, ids not in the basket then add""" + logging.debug("update") + logging.debug(repr(ids)) if type(ids) is not ListType: ids=[ids] @@ -1024,10 +1031,19 @@ class CDLIBasket(Folder,CatalogAware): oldContent=lastVersion.content.getContent() newContent=[] - #first copy the old + #keine ids dann alle update + if len(ids)==0: + ids=[x[0] for x in oldContent] + + #first copy the id not to be updated for obj in oldContent: - if obj[1].getId() not in ids: - newContent.append(obj) + logging.debug("obj:"+repr(obj)) + try: # old format of the basket + if obj[1].getId() not in ids: + newContent.append(obj) + except: + if obj[0] not in ids: + newContent.append(obj) #now add the new for id in ids: @@ -1036,17 +1052,20 @@ class CDLIBasket(Folder,CatalogAware): for found in founds: if found.getObject() not in oldContent: #TODO: was passiert wenn, man eine Object dazufuegt, das schon da ist aber eine neuere version - newContent.append((found.getObject().getLastVersion(),found.getObject())) + newContent.append((id,found.getObject().getLastVersion().getVersionNumber())) content=newContent user=self.getActualUserName() - + logging.debug(newContent) ob=manage_addCDLIBasketVersion(self,user,comment="",basketContent=newContent) obj=self._getOb(ob.getId()) + logging.debug(repr(obj)) + logging.debug("done") + logging.debug(obj.absolute_url()) if RESPONSE: - + logging.debug("redirect") RESPONSE.redirect(obj.absolute_url()) return obj @@ -1184,7 +1203,7 @@ class CDLIBasket(Folder,CatalogAware): return lv.getComment(),lv.getUser(),lv.getTime(),ret - def changeBasket(self,ids,submit,RESPONSE=None,REQUEST=None): + def changeBasket(self,submit,ids=[],RESPONSE=None,REQUEST=None): """change a basket""" if submit=="update": self.updateObjects(ids,RESPONSE=RESPONSE,REQUEST=REQUEST) @@ -1549,12 +1568,16 @@ class CDLIBasketVersion(Implicit,Persist def getObjUrl(self,result): """getUrl of the version of the object""" - + logging.debug("getObjUrl:"+result) founds=self.CDLICatalog.search({'title':result}) if len(founds)>0: - return founds[0].getObject().getLastVersion().absolute_url() + logging.debug("getObjUrl: founds 1") + logging.debug("getObjUrl:"+repr(founds[0].getObject())) + #return founds[0].getObject().getLastVersion().absolute_url() + return founds[0].getObject().absolute_url() else: #assume version number + logging.debug("getObjUrl: founds 2") splitted=result.split("_") founds=self.CDLICatalog.search({'title':splitted[1]}) return founds[0].getObject().getLastVersion().absolute_url()+'/'+result