Allow a study to be deleted, even if some statistics are laying around.
This commit is contained in:
parent
fae07f289f
commit
a322801c91
|
@ -5,6 +5,7 @@ from SpiffWorkflow import WorkflowException
|
|||
from crc import db, session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.protocol_builder import ProtocolBuilderStudy, ProtocolBuilderStatus
|
||||
from crc.models.stats import WorkflowStatsModel
|
||||
from crc.models.study import StudyModel, Study, Category, WorkflowMetadata
|
||||
from crc.models.workflow import WorkflowSpecCategoryModel, WorkflowModel, WorkflowSpecModel, WorkflowState, \
|
||||
WorkflowStatus
|
||||
|
@ -45,6 +46,7 @@ class StudyService(object):
|
|||
|
||||
@staticmethod
|
||||
def delete_study(study_id):
|
||||
session.query(WorkflowStatsModel).filter_by(study_id=study_id).delete()
|
||||
session.query(WorkflowModel).filter_by(study_id=study_id).delete()
|
||||
session.query(StudyModel).filter_by(id=study_id).delete()
|
||||
|
||||
|
|
|
@ -6,9 +6,11 @@ from crc import session
|
|||
from crc.models.api_models import WorkflowApiSchema
|
||||
from crc.models.protocol_builder import ProtocolBuilderStatus, \
|
||||
ProtocolBuilderStudySchema
|
||||
from crc.models.stats import WorkflowStatsModel
|
||||
from crc.models.study import StudyModel, StudySchema
|
||||
from crc.models.workflow import WorkflowSpecModel, WorkflowSpecModelSchema, WorkflowModel, WorkflowStatus, \
|
||||
WorkflowSpecCategoryModel
|
||||
from crc.services.workflow_processor import WorkflowProcessor
|
||||
from tests.base_test import BaseTest
|
||||
|
||||
|
||||
|
@ -175,6 +177,23 @@ class TestStudyApi(BaseTest):
|
|||
rv = self.app.delete('/v1.0/study/%i' % study.id, headers=self.logged_in_headers())
|
||||
self.assert_success(rv)
|
||||
|
||||
def test_delete_study_with_workflow_and_status(self):
|
||||
self.load_example_data()
|
||||
study = session.query(StudyModel).first()
|
||||
new_category = WorkflowSpecCategoryModel(id=21, name="test_cat", display_name="Test Category", display_order=0)
|
||||
session.add(new_category)
|
||||
session.commit()
|
||||
# Create a workflow specification, and complete some stuff that would log stats
|
||||
workflow = self.create_workflow("random_fact", study=study, category_id=new_category.id)
|
||||
session.add(workflow)
|
||||
session.commit()
|
||||
stats = WorkflowStatsModel(study_id=study.id, workflow_id=workflow.id)
|
||||
session.add(stats)
|
||||
session.commit()
|
||||
rv = self.app.delete('/v1.0/study/%i' % study.id, headers=self.logged_in_headers())
|
||||
self.assert_success(rv)
|
||||
|
||||
|
||||
# """
|
||||
# Workflow Specs that have been made available (or not) to a particular study via the status.bpmn should be flagged
|
||||
# as available (or not) when the list of a study's workflows is retrieved.
|
||||
|
|
Loading…
Reference in New Issue