diff --git a/cubicweb_rodolf/hooks.py b/cubicweb_rodolf/hooks.py index 6ad5b6834f8e431d991fcc6609b6a5ab88b74bcc_Y3ViaWN3ZWJfcm9kb2xmL2hvb2tzLnB5..bf8d91cb69ef6b15acb4b9fb17efdde46bf9a36d_Y3ViaWN3ZWJfcm9kb2xmL2hvb2tzLnB5 100644 --- a/cubicweb_rodolf/hooks.py +++ b/cubicweb_rodolf/hooks.py @@ -115,3 +115,49 @@ f"urn:rodolf:{procedure.eid}:ontology", file.download_file_name(), ) + + +class DeleteImportProcedureHook(Hook): + __regid__ = "rodolf.delete-import-procedure-hook" + __select__ = Hook.__select__ & is_instance("ImportProcedure") + events = ("before_delete_entity",) + + def __call__(self): + # Delete linked ImportProcess, ImportRecipe and RqTask + self._cw.execute( + "DELETE ImportRecipe X WHERE PROCEDURE eid %(eid)s, PROCEDURE import_recipes X", + {"eid": self.entity.eid}, + ) + self._cw.execute( + "DELETE RqTask X WHERE PROCESS import_procedure %(eid)s, PROCESS rq_task X", + {"eid": self.entity.eid}, + ) + self._cw.execute( + "DELETE ImportProcess X WHERE X import_procedure %(eid)s", + {"eid": self.entity.eid}, + ) + self._cw.commit() + + +class DeleteDataServiceHook(Hook): + __regid__ = "rodolf.delete-data-service-hook" + __select__ = Hook.__select__ & is_instance("DataService") + events = ("before_delete_entity",) + + def __call__(self): + # Delete linked ImportProcess, ImportRecipe and RqTask + self._cw.execute( + "DELETE RqTask X WHERE RECIPE dataservice %(eid)s, " + "PROCESS import_recipe RECIPE, PROCESS rq_task X", + {"eid": self.entity.eid}, + ) + self._cw.execute( + "DELETE ImportProcess X WHERE RECIPE dataservice %(eid)s, " + "PROCESS import_recipe RECIPE", + {"eid": self.entity.eid}, + ) + self._cw.execute( + "DELETE ImportRecipe X WHERE X dataservice %(eid)s", + {"eid": self.entity.eid}, + ) + self._cw.commit()