Merge branch 'master' into feature_personnel_multi_instance

This commit is contained in:
Dan Funk 2020-04-15 12:36:50 -04:00
commit 288efff364
4 changed files with 65 additions and 19 deletions

View File

@ -44,7 +44,7 @@ class StudyModel(db.Model):
class WorkflowMetadata(object):
def __init__(self, id, name, display_name, description, spec_version, category_id, state: WorkflowState, status: WorkflowStatus,
total_tasks, completed_tasks):
total_tasks, completed_tasks, display_order):
self.id = id
self.name = name
self.display_name = display_name
@ -55,6 +55,7 @@ class WorkflowMetadata(object):
self.status = status
self.total_tasks = total_tasks
self.completed_tasks = completed_tasks
self.display_order = display_order
@classmethod
@ -69,7 +70,9 @@ class WorkflowMetadata(object):
state=WorkflowState.optional,
status=workflow.status,
total_tasks=workflow.total_tasks,
completed_tasks=workflow.completed_tasks)
completed_tasks=workflow.completed_tasks,
display_order=workflow.workflow_spec.display_order
)
return instance
@ -79,7 +82,7 @@ class WorkflowMetadataSchema(ma.Schema):
class Meta:
model = WorkflowMetadata
additional = ["id", "name", "display_name", "description",
"total_tasks", "completed_tasks"]
"total_tasks", "completed_tasks", "display_order"]
unknown = INCLUDE

View File

@ -27,6 +27,7 @@ class WorkflowSpecModel(db.Model):
id = db.Column(db.String, primary_key=True)
name = db.Column(db.String)
display_name = db.Column(db.String)
display_order = db.Column(db.Integer, nullable=True)
description = db.Column(db.Text)
primary_process_id = db.Column(db.String)
category_id = db.Column(db.Integer, db.ForeignKey('workflow_spec_category.id'), nullable=True)

View File

@ -78,80 +78,93 @@ class ExampleDataLoader:
name="irb_api_personnel",
display_name="IRB API Personnel",
description="TBD",
category_id=0)
category_id=0,
display_order=0)
self.create_spec(id="irb_api_details",
name="irb_api_details",
display_name="Protocol Builder Data",
description="TBD",
category_id=0)
category_id=0,
display_order=1)
# Core Info
self.create_spec(id="core_info",
name="core_info",
display_name="Core Info",
description="TBD",
category_id=1)
category_id=1,
display_order=0)
self.create_spec(id="core_info_approvals_ids",
name="core_info_approvals_ids",
display_name="Core Info - Approvals - IDS",
description="TBD",
category_id=1)
category_id=1,
display_order=1)
self.create_spec(id="core_info_data_security_plan_outside",
name="core_info_data_security_plan_outside",
display_name="Core Info - Data Security Plan - Outside",
description="TBD",
category_id=1)
category_id=1,
display_order=2)
# Approvals
self.create_spec(id="ids_full_submission",
name="ids_full_submission",
display_name="Investigative Drug Services (IDS) Full Submission",
description="TBD",
category_id=2)
category_id=2,
display_order=0)
self.create_spec(id="ids_waiver",
name="ids_waiver",
display_name="Investigational Drug Service (IDS) Waiver",
description="TBD",
category_id=2)
category_id=2,
display_order=1)
# Data Security Plan
self.create_spec(id="data_security_plan_inside",
name="data_security_plan_inside",
display_name="Data Security Plan - Inside",
description="TBD",
category_id=3)
category_id=3,
display_order=0)
self.create_spec(id="data_security_plan_outside",
name="data_security_plan_outside",
display_name="Data Security Plan - Outside",
description="TBD",
category_id=3)
category_id=3,
display_order=1)
self.create_spec(id="data_security_plan_generate",
name="data_security_plan_generate",
display_name="Data Security Plan - Generate",
description="TBD",
category_id=3)
category_id=3,
display_order=2)
# Finance
self.create_spec(id="sponsor_funding_source",
name="sponsor_funding_source",
display_name="Sponsor Funding Source",
description="TBD",
category_id=4)
category_id=4,
display_order=0)
self.create_spec(id="finance",
name="finance",
display_name="Finance Data",
description="TBD",
category_id=4)
category_id=4,
display_order=1)
# Notifications
self.create_spec(id="notifications",
name="notifications",
display_name="Notifications",
description="TBD",
category_id=5)
category_id=5,
display_order=0)
def create_spec(self, id, name, display_name="", description="", filepath=None, master_spec=False, category_id=None):
def create_spec(self, id, name, display_name="", description="", filepath=None, master_spec=False, category_id=None, display_order=None):
"""Assumes that a directory exists in static/bpmn with the same name as the given id.
further assumes that the [id].bpmn is the primary file for the workflow.
returns an array of data models to be added to the database."""
@ -162,7 +175,8 @@ class ExampleDataLoader:
display_name=display_name,
description=description,
is_master_spec=master_spec,
category_id=category_id)
category_id=category_id,
display_order=display_order)
db.session.add(spec)
db.session.commit()
if not filepath:

View File

@ -0,0 +1,28 @@
"""empty message
Revision ID: 7be7cecbeea8
Revises: 7c0de7621a1f
Create Date: 2020-04-09 14:23:37.384927
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '7be7cecbeea8'
down_revision = '7c0de7621a1f'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('workflow_spec', sa.Column('display_order', sa.Integer(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('workflow_spec', 'display_order')
# ### end Alembic commands ###