X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plomtask%2Fprocesses.py;h=e67b13414e26d40a87e77545ce57d238bc050028;hb=23012cd370777b60a25839788d131173d2abee91;hp=c0b13b551862b0c8a00c927c4cc0665ae178daeb;hpb=8570f4ce4d44b813a1f02b72c5c45a57d2003bae;p=plomtask diff --git a/plomtask/processes.py b/plomtask/processes.py index c0b13b5..e67b134 100644 --- a/plomtask/processes.py +++ b/plomtask/processes.py @@ -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)