home
·
contact
·
privacy
projects
/
plomtask
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
More refactoring.
[plomtask]
/
plomtask
/
processes.py
diff --git
a/plomtask/processes.py
b/plomtask/processes.py
index 0a9b95b3f5faf89fd5a4a9a0991c7bb9a70ca9c5..c4ccfa8fd3926491bf1a52fc3c2c36d6d271cd63 100644
(file)
--- 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 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.conditions import Condition, ConditionsRelations
-from plomtask.exceptions import NotFoundException, BadFormatException
+from plomtask.exceptions import (NotFoundException, BadFormatException,
+ HandledException)
@dataclass
@dataclass
@@
-170,8
+171,15
@@
class Process(BaseModel[int], ConditionsRelations):
step.save(db_conn)
def remove(self, db_conn: DatabaseConnection) -> None:
step.save(db_conn)
def remove(self, db_conn: DatabaseConnection) -> None:
- """Remove from DB, with dependencies."""
+ """Remove from DB, with dependencies.
+
+ Guard against removal of Processes in use.
+ """
assert isinstance(self.id_, int)
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_)
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_)