- id_ = params.get_int_or_none('id')
- todo = Todo.by_id(conn, id_)
- child_id = form_data.get_int_or_none('adopt')
- if child_id is not None:
- child = Todo.by_id(conn, child_id)
+ id_ = self.params.get_int('id')
+ todo = Todo.by_id(self.conn, id_)
+ adopted_child_ids = self.form_data.get_all_int('adopt')
+ for child in todo.children:
+ if child.id_ not in adopted_child_ids:
+ assert isinstance(child.id_, int)
+ child = Todo.by_id(self.conn, child.id_)
+ todo.remove_child(child)
+ for child_id in adopted_child_ids:
+ if child_id in [c.id_ for c in todo.children]:
+ continue
+ child = Todo.by_id(self.conn, child_id)