2021-11-30 08:54:15 -05:00
|
|
|
from crc import session
|
|
|
|
from crc.api.common import ApiError
|
2022-03-10 14:28:47 -05:00
|
|
|
from crc.models.workflow import WorkflowModel, WorkflowStatus
|
2021-11-30 08:54:15 -05:00
|
|
|
from crc.scripts.script import Script
|
|
|
|
|
|
|
|
|
|
|
|
class MyScript(Script):
|
|
|
|
|
|
|
|
def get_description(self):
|
|
|
|
return """
|
|
|
|
Get the status of a workflow.
|
|
|
|
Currently, status is one of "not_started", "user_input_required", "waiting", or "complete".
|
|
|
|
|
|
|
|
You must pass a workflow_id.
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
status = get_workflow_status(1)
|
|
|
|
status = get_workflow_status(search_workflow_id=1)
|
|
|
|
"""
|
|
|
|
|
|
|
|
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
|
2022-03-09 11:14:54 -05:00
|
|
|
if 'workflow_spec_id' in kwargs.keys() or len(args) > 0:
|
2022-03-10 14:28:47 -05:00
|
|
|
return WorkflowStatus.not_started.value
|
2022-03-09 11:14:54 -05:00
|
|
|
else:
|
|
|
|
raise ApiError.from_task(code='missing_argument',
|
|
|
|
message='You must include a workflow_spec_id when calling the `get_workflow_status` script.',
|
|
|
|
task=task)
|
2021-11-30 08:54:15 -05:00
|
|
|
|
|
|
|
def do_task(self, task, study_id, workflow_id, *args, **kwargs):
|
2022-03-09 11:14:54 -05:00
|
|
|
if 'workflow_spec_id' in kwargs.keys() or len(args) > 0:
|
|
|
|
if 'workflow_spec_id' in kwargs.keys():
|
|
|
|
workflow_spec_id = kwargs['workflow_spec_id']
|
2021-11-30 08:54:15 -05:00
|
|
|
else:
|
2022-03-09 11:14:54 -05:00
|
|
|
workflow_spec_id = args[0]
|
|
|
|
workflow_model = session.query(WorkflowModel). \
|
|
|
|
filter(WorkflowModel.workflow_spec_id == workflow_spec_id). \
|
|
|
|
filter(WorkflowModel.study_id == study_id).\
|
|
|
|
first()
|
2021-11-30 08:54:15 -05:00
|
|
|
if workflow_model:
|
|
|
|
return workflow_model.status.value
|
|
|
|
else:
|
2022-03-10 14:28:47 -05:00
|
|
|
return WorkflowStatus.not_started.value
|
2021-11-30 08:54:15 -05:00
|
|
|
|
|
|
|
else:
|
|
|
|
raise ApiError.from_task(code='missing_argument',
|
2022-03-09 11:14:54 -05:00
|
|
|
message='You must include a workflow_spec_id when calling the `get_workflow_status` script.',
|
2021-11-30 08:54:15 -05:00
|
|
|
task=task)
|