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): class WorkflowMetadata(object):
def __init__(self, id, name, display_name, description, spec_version, category_id, state: WorkflowState, status: WorkflowStatus, 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.id = id
self.name = name self.name = name
self.display_name = display_name self.display_name = display_name
@ -55,6 +55,7 @@ class WorkflowMetadata(object):
self.status = status self.status = status
self.total_tasks = total_tasks self.total_tasks = total_tasks
self.completed_tasks = completed_tasks self.completed_tasks = completed_tasks
self.display_order = display_order
@classmethod @classmethod
@ -69,7 +70,9 @@ class WorkflowMetadata(object):
state=WorkflowState.optional, state=WorkflowState.optional,
status=workflow.status, status=workflow.status,
total_tasks=workflow.total_tasks, total_tasks=workflow.total_tasks,
completed_tasks=workflow.completed_tasks) completed_tasks=workflow.completed_tasks,
display_order=workflow.workflow_spec.display_order
)
return instance return instance
@ -79,7 +82,7 @@ class WorkflowMetadataSchema(ma.Schema):
class Meta: class Meta:
model = WorkflowMetadata model = WorkflowMetadata
additional = ["id", "name", "display_name", "description", additional = ["id", "name", "display_name", "description",
"total_tasks", "completed_tasks"] "total_tasks", "completed_tasks", "display_order"]
unknown = INCLUDE unknown = INCLUDE
@ -152,4 +155,4 @@ class StudySchema(ma.Schema):
@marshmallow.post_load @marshmallow.post_load
def make_study(self, data, **kwargs): def make_study(self, data, **kwargs):
"""Can load the basic study data for updates to the database, but categories are write only""" """Can load the basic study data for updates to the database, but categories are write only"""
return Study(**data) return Study(**data)

View File

@ -27,6 +27,7 @@ class WorkflowSpecModel(db.Model):
id = db.Column(db.String, primary_key=True) id = db.Column(db.String, primary_key=True)
name = db.Column(db.String) name = db.Column(db.String)
display_name = db.Column(db.String) display_name = db.Column(db.String)
display_order = db.Column(db.Integer, nullable=True)
description = db.Column(db.Text) description = db.Column(db.Text)
primary_process_id = db.Column(db.String) primary_process_id = db.Column(db.String)
category_id = db.Column(db.Integer, db.ForeignKey('workflow_spec_category.id'), nullable=True) 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", name="irb_api_personnel",
display_name="IRB API Personnel", display_name="IRB API Personnel",
description="TBD", description="TBD",
category_id=0) category_id=0,
display_order=0)
self.create_spec(id="irb_api_details", self.create_spec(id="irb_api_details",
name="irb_api_details", name="irb_api_details",
display_name="Protocol Builder Data", display_name="Protocol Builder Data",
description="TBD", description="TBD",
category_id=0) category_id=0,
display_order=1)
# Core Info # Core Info
self.create_spec(id="core_info", self.create_spec(id="core_info",
name="core_info", name="core_info",
display_name="Core Info", display_name="Core Info",
description="TBD", description="TBD",
category_id=1) category_id=1,
display_order=0)
self.create_spec(id="core_info_approvals_ids", self.create_spec(id="core_info_approvals_ids",
name="core_info_approvals_ids", name="core_info_approvals_ids",
display_name="Core Info - Approvals - IDS", display_name="Core Info - Approvals - IDS",
description="TBD", description="TBD",
category_id=1) category_id=1,
display_order=1)
self.create_spec(id="core_info_data_security_plan_outside", self.create_spec(id="core_info_data_security_plan_outside",
name="core_info_data_security_plan_outside", name="core_info_data_security_plan_outside",
display_name="Core Info - Data Security Plan - Outside", display_name="Core Info - Data Security Plan - Outside",
description="TBD", description="TBD",
category_id=1) category_id=1,
display_order=2)
# Approvals # Approvals
self.create_spec(id="ids_full_submission", self.create_spec(id="ids_full_submission",
name="ids_full_submission", name="ids_full_submission",
display_name="Investigative Drug Services (IDS) Full Submission", display_name="Investigative Drug Services (IDS) Full Submission",
description="TBD", description="TBD",
category_id=2) category_id=2,
display_order=0)
self.create_spec(id="ids_waiver", self.create_spec(id="ids_waiver",
name="ids_waiver", name="ids_waiver",
display_name="Investigational Drug Service (IDS) Waiver", display_name="Investigational Drug Service (IDS) Waiver",
description="TBD", description="TBD",
category_id=2) category_id=2,
display_order=1)
# Data Security Plan # Data Security Plan
self.create_spec(id="data_security_plan_inside", self.create_spec(id="data_security_plan_inside",
name="data_security_plan_inside", name="data_security_plan_inside",
display_name="Data Security Plan - Inside", display_name="Data Security Plan - Inside",
description="TBD", description="TBD",
category_id=3) category_id=3,
display_order=0)
self.create_spec(id="data_security_plan_outside", self.create_spec(id="data_security_plan_outside",
name="data_security_plan_outside", name="data_security_plan_outside",
display_name="Data Security Plan - Outside", display_name="Data Security Plan - Outside",
description="TBD", description="TBD",
category_id=3) category_id=3,
display_order=1)
self.create_spec(id="data_security_plan_generate", self.create_spec(id="data_security_plan_generate",
name="data_security_plan_generate", name="data_security_plan_generate",
display_name="Data Security Plan - Generate", display_name="Data Security Plan - Generate",
description="TBD", description="TBD",
category_id=3) category_id=3,
display_order=2)
# Finance # Finance
self.create_spec(id="sponsor_funding_source", self.create_spec(id="sponsor_funding_source",
name="sponsor_funding_source", name="sponsor_funding_source",
display_name="Sponsor Funding Source", display_name="Sponsor Funding Source",
description="TBD", description="TBD",
category_id=4) category_id=4,
display_order=0)
self.create_spec(id="finance", self.create_spec(id="finance",
name="finance", name="finance",
display_name="Finance Data", display_name="Finance Data",
description="TBD", description="TBD",
category_id=4) category_id=4,
display_order=1)
# Notifications # Notifications
self.create_spec(id="notifications", self.create_spec(id="notifications",
name="notifications", name="notifications",
display_name="Notifications", display_name="Notifications",
description="TBD", 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. """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. 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.""" returns an array of data models to be added to the database."""
@ -162,7 +175,8 @@ class ExampleDataLoader:
display_name=display_name, display_name=display_name,
description=description, description=description,
is_master_spec=master_spec, is_master_spec=master_spec,
category_id=category_id) category_id=category_id,
display_order=display_order)
db.session.add(spec) db.session.add(spec)
db.session.commit() db.session.commit()
if not filepath: 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 ###