home · contact · privacy
Add Todo.parents.
[plomtask] / plomtask / todos.py
index 7faea73b74df9c4b5a8f68f6dceced09f27c9b67..e8e00acbd8cd77d58d7d99ce2d0551288ffb96f4 100644 (file)
@@ -18,6 +18,7 @@ class Todo:
         self.is_done = is_done
         self.day = day
         self.children: list[Todo] = []
+        self.parents: list[Todo] = []
 
     @classmethod
     def from_table_row(cls, db_conn: DatabaseConnection, row: Row) -> Todo:
@@ -46,6 +47,9 @@ class Todo:
             for row in db_conn.exec('SELECT child FROM todo_children '
                                     'WHERE parent = ?', (id_,)):
                 todo.children += [cls.by_id(db_conn, row[0])]
+            for row in db_conn.exec('SELECT parent FROM todo_children '
+                                    'WHERE child = ?', (id_,)):
+                todo.parents += [cls.by_id(db_conn, row[0])]
         assert isinstance(todo, Todo)
         return todo
 
@@ -72,6 +76,7 @@ class Todo:
             raise BadFormatException('cannot adopt same child twice')
         walk_steps(child)
         self.children += [child]
+        child.parents += [self]
 
     def save(self, db_conn: DatabaseConnection) -> None:
         """Write self and children to DB and its cache."""