table_name = 'todos'
to_save = ['process_id', 'is_done', 'date', 'comment', 'effort',
'calendarize']
- to_save_relations = [('todo_conditions', 'todo', 'conditions'),
- ('todo_blockers', 'todo', 'blockers'),
- ('todo_enables', 'todo', 'enables'),
- ('todo_disables', 'todo', 'disables'),
- ('todo_children', 'parent', 'children'),
- ('todo_children', 'child', 'parents')]
+ to_save_relations = [('todo_conditions', 'todo', 'conditions', 0),
+ ('todo_blockers', 'todo', 'blockers', 0),
+ ('todo_enables', 'todo', 'enables', 0),
+ ('todo_disables', 'todo', 'disables', 0),
+ ('todo_children', 'parent', 'children', 0),
+ ('todo_children', 'child', 'parents', 1)]
to_search = ['comment']
# pylint: disable=too-many-arguments
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."""