X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=sidebyside;f=plomtask%2Ftodos.py;h=4d7e393bc49191db242235c1f11092bafce450ed;hb=0274be2e09f4b9c9cffa9e6737a8b128e0fab76d;hp=705bd725e2ff662ab4f9f2e370e61169a413ff03;hpb=c5449a0b00f8865b1129ed56bdd16f1cc055bc87;p=plomtask
diff --git a/plomtask/todos.py b/plomtask/todos.py
index 705bd72..4d7e393 100644
--- a/plomtask/todos.py
+++ b/plomtask/todos.py
@@ -1,6 +1,5 @@
"""Actionables."""
from __future__ import annotations
-from dataclasses import dataclass
from typing import Any, Set
from sqlite3 import Row
from plomtask.db import DatabaseConnection, BaseModel
@@ -12,13 +11,28 @@ from plomtask.exceptions import (NotFoundException, BadFormatException,
from plomtask.dating import valid_date
-@dataclass
class TodoNode:
"""Collects what's useful to know for Todo/Condition tree display."""
+ # pylint: disable=too-few-public-methods
todo: Todo
seen: bool
children: list[TodoNode]
+ def __init__(self,
+ todo: Todo,
+ seen: bool,
+ children: list[TodoNode]) -> None:
+ self.todo = todo
+ self.seen = seen
+ self.children = children
+
+ @property
+ def as_dict(self) -> dict[str, object]:
+ """Return self as (json.dumps-coompatible) dict."""
+ return {'todo': self.todo.id_,
+ 'seen': self.seen,
+ 'children': [c.as_dict for c in self.children]}
+
class Todo(BaseModel[int], ConditionsRelations):
"""Individual actionable."""