From 792a6503664168538df87b69c3305dcc69d5c755 Mon Sep 17 00:00:00 2001 From: Adam Coldrick Date: Thu, 14 Jul 2016 16:11:57 +0000 Subject: [PATCH] Allow timeline events to be related to worklists and boards This commit allows timeline events to be related to worklists and boards. This will allow events to be created when changes occur in worklists and boards, leading to the creation of an events timeline for those things. Change-Id: I881920c69c2fe1cb7cdfd7529f50e8e5c94cd1d4 --- ...allow_timeline_events_to_be_related_to_.py | 46 +++++++++++++++++++ storyboard/db/models.py | 4 +- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 storyboard/db/migration/alembic_migrations/versions/060_allow_timeline_events_to_be_related_to_.py diff --git a/storyboard/db/migration/alembic_migrations/versions/060_allow_timeline_events_to_be_related_to_.py b/storyboard/db/migration/alembic_migrations/versions/060_allow_timeline_events_to_be_related_to_.py new file mode 100644 index 00000000..b8facb44 --- /dev/null +++ b/storyboard/db/migration/alembic_migrations/versions/060_allow_timeline_events_to_be_related_to_.py @@ -0,0 +1,46 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +"""Allow timeline events to be related to boards and worklists + +Revision ID: 060 +Revises: 059 +Create Date: 2016-07-14 15:05:12.369072 + +""" + +# revision identifiers, used by Alembic. +revision = '060' +down_revision = '059' + + +from alembic import op +import sqlalchemy as sa + + +def upgrade(active_plugins=None, options=None): + op.add_column( + 'events', sa.Column('board_id', sa.Integer(), nullable=True)) + op.add_column( + 'events', sa.Column('worklist_id', sa.Integer(), nullable=True)) + op.create_foreign_key( + 'fk_event_worklist', 'events', 'worklists', ['worklist_id'], ['id']) + op.create_foreign_key( + 'fk_event_board', 'events', 'boards', ['board_id'], ['id']) + + +def downgrade(active_plugins=None, options=None): + op.drop_constraint('fk_event_worklist', 'events', type_='foreignkey') + op.drop_constraint('fk_event_board', 'events', type_='foreignkey') + op.drop_column('events', 'worklist_id') + op.drop_column('events', 'board_id') diff --git a/storyboard/db/models.py b/storyboard/db/models.py index 3be05d58..b6ef191f 100644 --- a/storyboard/db/models.py +++ b/storyboard/db/models.py @@ -486,7 +486,9 @@ class StorySummary(Base): class TimeLineEvent(ModelBuilder, Base): __tablename__ = 'events' - story_id = Column(Integer, ForeignKey('stories.id')) + story_id = Column(Integer, ForeignKey('stories.id'), nullable=True) + worklist_id = Column(Integer, ForeignKey('worklists.id'), nullable=True) + board_id = Column(Integer, ForeignKey('boards.id'), nullable=True) comment_id = Column(Integer, ForeignKey('comments.id'), nullable=True) author_id = Column(Integer, ForeignKey('users.id'), nullable=True)