From 902dba7191973a2c904e19126a7fdb9db6a84275 Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Fri, 13 Mar 2020 14:56:46 -0400 Subject: [PATCH] Adds is_status flag to workflow specs --- crc/models/file.py | 1 + crc/models/workflow.py | 15 ++++++++++ crc/services/file_service.py | 5 ++-- migrations/versions/5f06108116ae_.py | 41 ++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 migrations/versions/5f06108116ae_.py diff --git a/crc/models/file.py b/crc/models/file.py index ce7c8a34..0956a18b 100644 --- a/crc/models/file.py +++ b/crc/models/file.py @@ -71,6 +71,7 @@ class FileModel(db.Model): name = db.Column(db.String) type = db.Column(db.Enum(FileType)) primary = db.Column(db.Boolean) + is_status = db.Column(db.Boolean) content_type = db.Column(db.String) workflow_spec_id = db.Column(db.String, db.ForeignKey('workflow_spec.id'), nullable=True) workflow_id = db.Column(db.Integer, db.ForeignKey('workflow.id'), nullable=True) diff --git a/crc/models/workflow.py b/crc/models/workflow.py index 92e74137..8ae0d8ed 100644 --- a/crc/models/workflow.py +++ b/crc/models/workflow.py @@ -4,6 +4,17 @@ from marshmallow_sqlalchemy import ModelSchema from crc import db +class WorkflowSpecCategoryModel(db.Model): + __tablename__ = 'workflow_spec_category' + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String) + display_name = db.Column(db.String) + + +class WorkflowSpecCategoryModelSchema(ModelSchema): + class Meta: + model = WorkflowSpecCategoryModel + class WorkflowSpecModel(db.Model): __tablename__ = 'workflow_spec' @@ -12,11 +23,15 @@ class WorkflowSpecModel(db.Model): display_name = db.Column(db.String) description = db.Column(db.Text) primary_process_id = db.Column(db.String) + workflow_spec_category_id = db.Column(db.Integer, db.ForeignKey('workflow_spec_category.id')) + workflow_spec_category = db.relationship("WorkflowSpecCategoryModel") + is_status = db.Column(db.Boolean) class WorkflowSpecModelSchema(ModelSchema): class Meta: model = WorkflowSpecModel + include_fk = True # Includes foreign keys class WorkflowStatus(enum.Enum): diff --git a/crc/services/file_service.py b/crc/services/file_service.py index 0163ab11..aa0182d1 100644 --- a/crc/services/file_service.py +++ b/crc/services/file_service.py @@ -16,12 +16,13 @@ class FileService(object): @staticmethod def add_workflow_spec_file(workflow_spec: WorkflowSpecModel, - name, content_type, binary_data, primary=False): + name, content_type, binary_data, primary=False, is_status=False): """Create a new file and associate it with a workflow spec.""" file_model = FileModel( workflow_spec_id=workflow_spec.id, name=name, - primary=primary + primary=primary, + is_status=is_status ) if primary: bpmn: ElementTree.Element = ElementTree.fromstring(binary_data) diff --git a/migrations/versions/5f06108116ae_.py b/migrations/versions/5f06108116ae_.py new file mode 100644 index 00000000..9b651a70 --- /dev/null +++ b/migrations/versions/5f06108116ae_.py @@ -0,0 +1,41 @@ +"""empty message + +Revision ID: 5f06108116ae +Revises: 90dd63672e0a +Create Date: 2020-03-13 14:55:32.214380 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '5f06108116ae' +down_revision = '90dd63672e0a' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('workflow_spec_category', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(), nullable=True), + sa.Column('display_name', sa.String(), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.add_column('file', sa.Column('is_status', sa.Boolean(), nullable=True)) + op.add_column('workflow_spec', sa.Column('is_status', sa.Boolean(), nullable=True)) + op.add_column('workflow_spec', sa.Column('workflow_spec_category_id', sa.Integer(), nullable=True)) + op.create_foreign_key(None, 'workflow_spec', 'workflow_spec_category', ['workflow_spec_category_id'], ['id']) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'workflow_spec', type_='foreignkey') + op.drop_column('workflow_spec', 'workflow_spec_category_id') + op.drop_column('workflow_spec', 'is_status') + op.drop_column('file', 'is_status') + op.drop_table('workflow_spec_category') + # ### end Alembic commands ###