X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=plomtask%2Fprocesses.py;h=21e2d8195edaf1a5d5fc1982b6aed26639e2da70;hb=9ad40c43627334d7294c07bf55d196dd6760cfde;hp=0a9b95b3f5faf89fd5a4a9a0991c7bb9a70ca9c5;hpb=6ec09c59e388711c43d9eba787c65ff8f60b9ce1;p=plomtask diff --git a/plomtask/processes.py b/plomtask/processes.py index 0a9b95b..21e2d81 100644 --- a/plomtask/processes.py +++ b/plomtask/processes.py @@ -4,9 +4,10 @@ from dataclasses import dataclass from typing import Set, Any from sqlite3 import Row from plomtask.db import DatabaseConnection, BaseModel -from plomtask.misc import VersionedAttribute +from plomtask.versioned_attributes import VersionedAttribute from plomtask.conditions import Condition, ConditionsRelations -from plomtask.exceptions import NotFoundException, BadFormatException +from plomtask.exceptions import (NotFoundException, BadFormatException, + HandledException) @dataclass @@ -172,6 +173,10 @@ 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_)