X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plomtask%2Fprocesses.py;h=375a0bee622081fd8690cc0e6c1a8ae5241685e1;hb=db1c88ab178f6ec54a994f2789c9db25604fcd83;hp=e67b13414e26d40a87e77545ce57d238bc050028;hpb=ee18435127ad396c24dbee2c7efcdbe6810d5a91;p=plomtask diff --git a/plomtask/processes.py b/plomtask/processes.py index e67b134..375a0be 100644 --- a/plomtask/processes.py +++ b/plomtask/processes.py @@ -6,7 +6,8 @@ from sqlite3 import Row from plomtask.db import DatabaseConnection, BaseModel from plomtask.misc import VersionedAttribute from plomtask.conditions import Condition, ConditionsRelations -from plomtask.exceptions import NotFoundException, BadFormatException +from plomtask.exceptions import (NotFoundException, BadFormatException, + HandledException) @dataclass @@ -172,11 +173,18 @@ class Process(BaseModel[int], ConditionsRelations): def remove(self, db_conn: DatabaseConnection) -> None: """Remove from DB, with dependencies.""" assert isinstance(self.id_, int) + for _ in db_conn.row_where('process_steps', 'step_process', self.id_): + raise HandledException('cannot remove Process in use') + for _ in db_conn.row_where('todos', 'process', self.id_): + raise HandledException('cannot remove Process in use') db_conn.delete_where('process_conditions', 'process', self.id_) db_conn.delete_where('process_enables', 'process', self.id_) db_conn.delete_where('process_disables', 'process', self.id_) for step in self.explicit_steps: step.remove(db_conn) + db_conn.delete_where('process_titles', 'parent', self.id_) + db_conn.delete_where('process_descriptions', 'parent', self.id_) + db_conn.delete_where('process_efforts', 'parent', self.id_) super().remove(db_conn)