X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/form?a=blobdiff_plain;f=plomtask%2Ftodos.py;fp=plomtask%2Ftodos.py;h=4d7e393bc49191db242235c1f11092bafce450ed;hb=e87f540aa7b550881462cb88380a773b328c0a3d;hp=705bd725e2ff662ab4f9f2e370e61169a413ff03;hpb=21df71ef1fde304b158da5989692c01f463515b5;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."""