X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;f=plomtask%2Ftodos.py;h=ffef677d29e652ad82d18e2d2c9f7b848e73a698;hb=63073c2c05785d2b5539780dd5bc40adff57aab1;hp=bffa23ae8c46ae02004344e7c206a4e7104050a0;hpb=3346c7fab2fda82b290d245798f4537b43abb012;p=plomtask diff --git a/plomtask/todos.py b/plomtask/todos.py index bffa23a..ffef677 100644 --- a/plomtask/todos.py +++ b/plomtask/todos.py @@ -31,6 +31,7 @@ class Todo(BaseModel[int], ConditionsRelations): ('todo_disables', 'todo', 'disables'), ('todo_children', 'parent', 'children'), ('todo_children', 'child', 'parents')] + to_search = ['comment'] # pylint: disable=too-many-arguments def __init__(self, id_: int | None, @@ -107,6 +108,12 @@ class Todo(BaseModel[int], ConditionsRelations): target += [Condition.by_id(db_conn, cond_id)] return todo + @classmethod + def by_process_id(cls, db_conn: DatabaseConnection, + process_id: int | None) -> list[Todo]: + """Collect all Todos of Process of process_id.""" + return [t for t in cls.all(db_conn) if t.process.id_ == process_id] + @classmethod def by_date(cls, db_conn: DatabaseConnection, date: str) -> list[Todo]: """Collect all Todos for Day of date.""" @@ -175,6 +182,20 @@ class Todo(BaseModel[int], ConditionsRelations): """Shortcut to .process.title.""" return self.process.title + @property + def title_then(self) -> str: + """Shortcut to .process.title.at(self.date)""" + title_then = self.process.title.at(self.date) + assert isinstance(title_then, str) + return title_then + + @property + def effort_then(self) -> float: + """Shortcut to .process.effort.at(self.date)""" + effort_then = self.process.effort.at(self.date) + assert isinstance(effort_then, float) + return effort_then + def adopt_from(self, todos: list[Todo]) -> bool: """As far as possible, fill unsatisfied dependencies from todos.""" adopted = False