def pop(self, id): ''' Remove a node from portfolio tree ''' el = self.element_objects.get(id, None) if el and el.editable: self.element_objects.pop(id, None) self.elements.pop(id, None) p = el.parent if p: listpop(p.children, id) children = el.children[:] for cid in children: c = self.element_objects.get(cid, None) c.parent = None if not c: continue c.setparent(p) # And now the database stuff if isinstance(c.dbobj, Portfolio): c.dbobj.setparent(p.dbobj) elif isinstance(p.dbobj, Portfolio): p.dbobj.position.add(c.dbobj) if not p.isfund: p.dbobj.save() el.dbobj.delete() self.view.save() else: el = None return el
def pop(self, id): ''' Remove a node from portfolio tree ''' el = self.element_objects.get(id,None) if el and el.editable: self.element_objects.pop(id,None) self.elements.pop(id,None) p = el.parent if p: listpop(p.children, id) children = el.children[:] for cid in children: c = self.element_objects.get(cid,None) c.parent = None if not c: continue c.setparent(p) # And now the database stuff if isinstance(c.dbobj,Portfolio): c.dbobj.setparent(p.dbobj) elif isinstance(p.dbobj,Portfolio): p.dbobj.position.add(c.dbobj) if not p.isfund: p.dbobj.save() el.dbobj.delete() self.view.save() else: el = None return el
def removechild(self, el): el.detach(self) return listpop(self.children, el.id)