sub_step_nodes = list(step_node.steps.values())
sub_step_nodes.sort(key=key_order_func)
for sub_node in sub_step_nodes:
+ if sub_node.is_suppressed:
+ continue
n_slots = len([n for n in sub_step_nodes
if n.process == sub_node.process])
filled_slots = len([t for t in satisfier.children
todo.save(db_conn)
steps_tree = process.get_steps(db_conn)
for step_node in steps_tree.values():
+ if step_node.is_suppressed:
+ continue
todo.add_child(walk_steps(todo, step_node))
todo.save(db_conn)
return todo
assert isinstance(effort_then, float)
return effort_then
+ @property
+ def has_doneness_in_path(self) -> bool:
+ """Check whether self is done or has any children that are."""
+ if self.is_done:
+ return True
+ for child in self.children:
+ if child.is_done:
+ return True
+ if child.has_doneness_in_path:
+ return True
+ return False
+
def get_step_tree(self, seen_todos: set[int]) -> TodoNode:
"""Return tree of depended-on Todos."""