Adds is_status flag to workflow_spec, status_spec_id & version to study, and is_active flag to WorkflowApi
This commit is contained in:
parent
b1a6c9b6c7
commit
e4af6f77d0
|
@ -95,7 +95,8 @@ class TaskSchema(ma.Schema):
|
||||||
|
|
||||||
|
|
||||||
class WorkflowApi(object):
|
class WorkflowApi(object):
|
||||||
def __init__(self, id, status, user_tasks, last_task, next_task, workflow_spec_id, spec_version, is_latest_spec):
|
def __init__(self, id, status, user_tasks, last_task, next_task, workflow_spec_id, spec_version,
|
||||||
|
is_latest_spec, is_active):
|
||||||
self.id = id
|
self.id = id
|
||||||
self.status = status
|
self.status = status
|
||||||
self.user_tasks = user_tasks
|
self.user_tasks = user_tasks
|
||||||
|
@ -104,13 +105,13 @@ class WorkflowApi(object):
|
||||||
self.workflow_spec_id = workflow_spec_id
|
self.workflow_spec_id = workflow_spec_id
|
||||||
self.spec_version = spec_version
|
self.spec_version = spec_version
|
||||||
self.is_latest_spec = is_latest_spec
|
self.is_latest_spec = is_latest_spec
|
||||||
|
self.is_active = is_active
|
||||||
|
|
||||||
class WorkflowApiSchema(ma.Schema):
|
class WorkflowApiSchema(ma.Schema):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = WorkflowApi
|
model = WorkflowApi
|
||||||
fields = ["id", "status", "user_tasks", "last_task", "next_task",
|
fields = ["id", "status", "user_tasks", "last_task", "next_task",
|
||||||
"workflow_spec_id", "spec_version", "is_latest_spec",
|
"workflow_spec_id", "spec_version", "is_latest_spec", "is_active"]
|
||||||
"num_tasks_total", "num_tasks_complete", "num_tasks_incomplete"]
|
|
||||||
unknown = INCLUDE
|
unknown = INCLUDE
|
||||||
|
|
||||||
status = EnumField(WorkflowStatus)
|
status = EnumField(WorkflowStatus)
|
||||||
|
@ -120,15 +121,7 @@ class WorkflowApiSchema(ma.Schema):
|
||||||
|
|
||||||
@marshmallow.post_load
|
@marshmallow.post_load
|
||||||
def make_workflow(self, data, **kwargs):
|
def make_workflow(self, data, **kwargs):
|
||||||
keys = [
|
keys = ['id', 'status', 'user_tasks', 'last_task', 'next_task',
|
||||||
'id',
|
'workflow_spec_id', 'spec_version', 'is_latest_spec', "is_active"]
|
||||||
'status',
|
|
||||||
'user_tasks',
|
|
||||||
'last_task',
|
|
||||||
'next_task',
|
|
||||||
'workflow_spec_id',
|
|
||||||
'spec_version',
|
|
||||||
'is_latest_spec'
|
|
||||||
]
|
|
||||||
filtered_fields = {key: data[key] for key in keys}
|
filtered_fields = {key: data[key] for key in keys}
|
||||||
return WorkflowApi(**filtered_fields)
|
return WorkflowApi(**filtered_fields)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from marshmallow_enum import EnumField
|
from marshmallow_enum import EnumField
|
||||||
from marshmallow_sqlalchemy import ModelSchema
|
from marshmallow_sqlalchemy import ModelSchema
|
||||||
from sqlalchemy import func
|
from sqlalchemy import func, Column
|
||||||
|
|
||||||
from crc import db
|
from crc import db
|
||||||
from crc.models.protocol_builder import ProtocolBuilderStatus
|
from crc.models.protocol_builder import ProtocolBuilderStatus
|
||||||
|
@ -20,6 +20,8 @@ class StudyModel(db.Model):
|
||||||
investigator_uids = db.Column(db.ARRAY(db.String), nullable=True)
|
investigator_uids = db.Column(db.ARRAY(db.String), nullable=True)
|
||||||
inactive = db.Column(db.Boolean, default=False)
|
inactive = db.Column(db.Boolean, default=False)
|
||||||
requirements = db.Column(db.ARRAY(db.Integer), nullable=True)
|
requirements = db.Column(db.ARRAY(db.Integer), nullable=True)
|
||||||
|
status_spec_id = db.Column(db.String, db.ForeignKey('workflow_spec.id'))
|
||||||
|
status_spec_version = db.Column(db.String)
|
||||||
|
|
||||||
|
|
||||||
class StudyModelSchema(ModelSchema):
|
class StudyModelSchema(ModelSchema):
|
||||||
|
|
|
@ -25,7 +25,7 @@ class WorkflowSpecModel(db.Model):
|
||||||
primary_process_id = db.Column(db.String)
|
primary_process_id = db.Column(db.String)
|
||||||
workflow_spec_category_id = db.Column(db.Integer, db.ForeignKey('workflow_spec_category.id'))
|
workflow_spec_category_id = db.Column(db.Integer, db.ForeignKey('workflow_spec_category.id'))
|
||||||
workflow_spec_category = db.relationship("WorkflowSpecCategoryModel")
|
workflow_spec_category = db.relationship("WorkflowSpecCategoryModel")
|
||||||
is_status = db.Column(db.Boolean)
|
is_status = db.Column(db.Boolean, default=False)
|
||||||
|
|
||||||
|
|
||||||
class WorkflowSpecModelSchema(ModelSchema):
|
class WorkflowSpecModelSchema(ModelSchema):
|
||||||
|
@ -49,4 +49,3 @@ class WorkflowModel(db.Model):
|
||||||
study_id = db.Column(db.Integer, db.ForeignKey('study.id'))
|
study_id = db.Column(db.Integer, db.ForeignKey('study.id'))
|
||||||
workflow_spec_id = db.Column(db.String, db.ForeignKey('workflow_spec.id'))
|
workflow_spec_id = db.Column(db.String, db.ForeignKey('workflow_spec.id'))
|
||||||
spec_version = db.Column(db.String)
|
spec_version = db.Column(db.String)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
"""empty message
|
||||||
|
|
||||||
|
Revision ID: 65f3fce6031a
|
||||||
|
Revises: 5f06108116ae
|
||||||
|
Create Date: 2020-03-15 12:40:42.314190
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '65f3fce6031a'
|
||||||
|
down_revision = '5f06108116ae'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.add_column('study', sa.Column('status_spec_id', sa.String(), nullable=True))
|
||||||
|
op.add_column('study', sa.Column('status_spec_version', sa.String(), nullable=True))
|
||||||
|
op.create_foreign_key(None, 'study', 'workflow_spec', ['status_spec_id'], ['id'])
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_constraint(None, 'study', type_='foreignkey')
|
||||||
|
op.drop_column('study', 'status_spec_version')
|
||||||
|
op.drop_column('study', 'status_spec_id')
|
||||||
|
# ### end Alembic commands ###
|
Loading…
Reference in New Issue