diff --git a/crc/api/workflow.py b/crc/api/workflow.py index 82c83e23..1d7a509f 100644 --- a/crc/api/workflow.py +++ b/crc/api/workflow.py @@ -138,7 +138,9 @@ def delete_workflow_specification(spec_id): # Delete all events and workflow models related to this specification for workflow in session.query(WorkflowModel).filter_by(workflow_spec_id=spec_id): StudyService.delete_workflow(workflow.id) - session.query(WorkflowSpecModel).filter_by(id=spec_id).delete() + # the cascade feature doesn't work if + deleteSpec = session.query(WorkflowSpecModel).filter_by(id=spec_id).first() + session.delete(deleteSpec) session.commit() diff --git a/crc/models/workflow.py b/crc/models/workflow.py index 8230069b..1c586f05 100644 --- a/crc/models/workflow.py +++ b/crc/models/workflow.py @@ -4,6 +4,7 @@ import marshmallow from marshmallow import EXCLUDE,fields from marshmallow_sqlalchemy import SQLAlchemyAutoSchema from sqlalchemy import func +from sqlalchemy.orm import backref from crc import db from crc.models.file import FileModel, FileDataModel @@ -46,9 +47,9 @@ class WorkflowLibraryModel(db.Model): library_spec_id = db.Column(db.String, db.ForeignKey('workflow_spec.id'), nullable=True) parent = db.relationship(WorkflowSpecModel, primaryjoin=workflow_spec_id==WorkflowSpecModel.id, - backref='libraries') + backref=backref('libraries',cascade='all, delete')) library = db.relationship(WorkflowSpecModel,primaryjoin=library_spec_id==WorkflowSpecModel.id, - backref='parents') + backref=backref('parents',cascade='all, delete')) class WorkflowSpecModelSchema(SQLAlchemyAutoSchema):