+ @classmethod
+ def create_with_children(cls, db_conn: DatabaseConnection, date: str,
+ process_ids: list[int]) -> list[Todo]:
+ """Create Todos of process_ids for date, ensure children."""
+ new_todos = []
+ for process_id in process_ids:
+ process = Process.by_id(db_conn, process_id)
+ todo = Todo(None, process, False, date)
+ todo.save(db_conn)
+ new_todos += [todo]
+ nothing_to_adopt = False
+ while not nothing_to_adopt:
+ nothing_to_adopt = True
+ existing_todos = Todo.by_date(db_conn, date)
+ for todo in new_todos:
+ if todo.adopt_from(existing_todos):
+ nothing_to_adopt = False
+ todo.make_missing_children(db_conn)
+ todo.save(db_conn)
+ return new_todos
+