X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=plomtask%2Ftodos.py;h=008f7a275ab42aa9bbbcfed1933c81f491854211;hb=81e1ac998001bedd8a739e6458c7ed30e474c0da;hp=af45f720ca6e2011fb52bd5af18582a2feca76f1;hpb=f0f10048714c1bbcf23a7fa6a934d126408845f3;p=plomtask
diff --git a/plomtask/todos.py b/plomtask/todos.py
index af45f72..008f7a2 100644
--- a/plomtask/todos.py
+++ b/plomtask/todos.py
@@ -23,6 +23,7 @@ class TodoNode:
class Todo(BaseModel[int], ConditionsRelations):
"""Individual actionable."""
# pylint: disable=too-many-instance-attributes
+ # pylint: disable=too-many-public-methods
table_name = 'todos'
to_save = ['process_id', 'is_done', 'date', 'comment', 'effort',
'calendarize']
@@ -154,6 +155,16 @@ class Todo(BaseModel[int], ConditionsRelations):
"""Collect all Todos for Day of date."""
return cls.by_date_range(db_conn, (date, date))
+ @classmethod
+ def total_effort_at_date(cls, db_conn: DatabaseConnection, date: str
+ ) -> float:
+ """Sum all .performed_effort of Todos at Day of date."""
+ total_effort = 0.0
+ days_todos = cls.by_date(db_conn, date)
+ for todo in days_todos:
+ total_effort += todo.performed_effort
+ return total_effort
+
@property
def is_doable(self) -> bool:
"""Decide whether .is_done settable based on children, Conditions."""
@@ -258,7 +269,7 @@ class Todo(BaseModel[int], ConditionsRelations):
"""Return sum of performed efforts of self and all descendants."""
def walk_tree(node: Todo) -> float:
- local_effort = 0
+ local_effort = 0.0
for child in node.children:
local_effort += walk_tree(child)
return node.performed_effort + local_effort