home · contact · privacy
Enable deletion of Processes.
[plomtask] / plomtask / processes.py
index c0b13b551862b0c8a00c927c4cc0665ae178daeb..e67b13414e26d40a87e77545ce57d238bc050028 100644 (file)
@@ -169,6 +169,16 @@ class Process(BaseModel[int], ConditionsRelations):
         for step in self.explicit_steps:
             step.save(db_conn)
 
+    def remove(self, db_conn: DatabaseConnection) -> None:
+        """Remove from DB, with dependencies."""
+        assert isinstance(self.id_, int)
+        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)
+        super().remove(db_conn)
+
 
 class ProcessStep(BaseModel[int]):
     """Sub-unit of Processes."""
@@ -185,3 +195,9 @@ class ProcessStep(BaseModel[int]):
     def save(self, db_conn: DatabaseConnection) -> None:
         """Default to simply calling self.save_core for simple cases."""
         self.save_core(db_conn)
+
+    def remove(self, db_conn: DatabaseConnection) -> None:
+        """Remove from DB, and owner's .explicit_steps."""
+        owner = Process.by_id(db_conn, self.owner_id)
+        owner.explicit_steps.remove(self)
+        super().remove(db_conn)