date = self._params.get_str('date', date_in_n_days(0))
make_type = self._params.get_str('make_type')
todays_todos = Todo.by_date(self.conn, date)
- total_effort = 0.0
- for todo in todays_todos:
- total_effort += todo.performed_effort
conditions_present = []
enablers_for = {}
disablers_for = {}
top_nodes = [t.get_step_tree(seen_todos)
for t in todays_todos if not t.parents]
return {'day': Day.by_id(self.conn, date, create=True),
- 'total_effort': total_effort,
+ 'total_effort': Todo.total_effort_at_date(self.conn, date),
'top_nodes': top_nodes,
'make_type': make_type,
'enablers_for': enablers_for,
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']
"""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."""