Add a security flag to Stories

This is more specific than "private" and can therefore be sensibly used
for automating ACLs based on projects/teams affected by the story.

Change-Id: Ib8ff53d11ba3977b15d735cef420ac44fd9aa288
Story: 2000568
Task: 29891
This commit is contained in:
Adam Coldrick 2019-03-08 09:04:27 +00:00 committed by Adam Coldrick
parent 30337674c5
commit b7e1b2e2ae
3 changed files with 40 additions and 0 deletions

View File

@ -245,6 +245,9 @@ class Story(base.APIBase):
private = bool
"""Whether or not this story is private."""
security = bool
"""Whether or not this story is security-related."""
users = wtypes.ArrayType(User)
"""The set of users with permission to see this story if it is private."""

View File

@ -0,0 +1,36 @@
# 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.
#
"""Add a 'security' flag to Stories
Revision ID: 066
Revises: 065
Create Date: 2019-03-08 08:57:44.497977
"""
# revision identifiers, used by Alembic.
revision = '066'
down_revision = '065'
from alembic import op
import sqlalchemy as sa
def upgrade(active_plugins=None, options=None):
op.add_column('stories', sa.Column('security', sa.Boolean()))
def downgrade(active_plugins=None, options=None):
op.drop_column('stories', 'security')

View File

@ -320,6 +320,7 @@ class Story(FullText, ModelBuilder, Base):
description = Column(UnicodeText())
is_bug = Column(Boolean, default=True)
private = Column(Boolean, default=False)
security = Column(Boolean, default=False)
tasks = relationship('Task', backref='story',
cascade="all, delete-orphan")
events = relationship('TimeLineEvent', backref='story',