X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/form?a=blobdiff_plain;ds=inline;f=plomtask%2Ftodos.py;h=fcb8617d71a055f49549d657b0dcedd294dd9b4d;hb=5e3c633f1994329297999899790e69d28516934b;hp=ecdd599f2cd538acda5494fc5035e72e076b6730;hpb=c4ccb784bb3a83c1c614c9bab7fc007ee17f6615;p=plomtask diff --git a/plomtask/todos.py b/plomtask/todos.py index ecdd599..fcb8617 100644 --- a/plomtask/todos.py +++ b/plomtask/todos.py @@ -25,10 +25,17 @@ class Todo(BaseModel[int], ConditionsRelations): # 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 @@ -252,35 +259,12 @@ class Todo(BaseModel[int], ConditionsRelations): 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)