# pylint: disable=too-many-instance-attributes
table_name = 'todos'
to_save = ['process_id', 'is_done', 'date']
+ to_save_relations = [('todo_conditions', 'todo', 'conditions'),
+ ('todo_enables', 'todo', 'enables'),
+ ('todo_disables', 'todo', 'disables'),
+ ('todo_children', 'parent', 'children'),
+ ('todo_children', 'child', 'parents')]
def __init__(self, id_: int | None, process: Process,
is_done: bool, date: str) -> None:
super().__init__(id_)
+ if process.id_ is None:
+ raise NotFoundException('Process of Todo without ID (not saved?)')
self.process = process
self._is_done = is_done
self.date = date
self.children.remove(child)
child.parents.remove(self)
- def save(self, db_conn: DatabaseConnection) -> None:
- """Write self and children to DB and its cache."""
- if self.process.id_ is None:
- raise NotFoundException('Process of Todo without ID (not saved?)')
- self.save_core(db_conn)
- assert isinstance(self.id_, int)
- db_conn.rewrite_relations('todo_children', 'child', self.id_,
- [[p.id_] for p in self.parents])
- db_conn.rewrite_relations('todo_children', 'parent', self.id_,
- [[c.id_] for c in self.children])
- db_conn.rewrite_relations('todo_conditions', 'todo', self.id_,
- [[c.id_] for c in self.conditions])
- db_conn.rewrite_relations('todo_enables', 'todo', self.id_,
- [[c.id_] for c in self.enables])
- db_conn.rewrite_relations('todo_disables', 'todo', self.id_,
- [[c.id_] for c in self.disables])
-
def remove(self, db_conn: DatabaseConnection) -> None:
"""Remove from DB, including relations."""
- assert isinstance(self.id_, int)
children_to_remove = self.children[:]
parents_to_remove = self.parents[:]
for child in children_to_remove:
self.remove_child(child)
for parent in parents_to_remove:
parent.remove_child(self)
- db_conn.delete_where('todo_children', 'parent', self.id_)
- db_conn.delete_where('todo_children', 'child', self.id_)
- db_conn.delete_where('todo_conditions', 'todo', self.id_)
- db_conn.delete_where('todo_enables', 'todo', self.id_)
- db_conn.delete_where('todo_disables', 'todo', self.id_)
super().remove(db_conn)