Change Environment.creator relation from ApplicationRole to User
This commit is contained in:
parent
e65c1d69b6
commit
f6cb6f2a31
@ -18,13 +18,13 @@ depends_on = None
|
|||||||
|
|
||||||
def upgrade():
|
def upgrade():
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
op.add_column('environments', sa.Column('creator_role_id', postgresql.UUID(as_uuid=True), nullable=False))
|
op.add_column('environments', sa.Column('creator_id', postgresql.UUID(as_uuid=True), nullable=False))
|
||||||
op.create_foreign_key("fk_application_roles_id", 'environments', 'application_roles', ['creator_role_id'], ['id'])
|
op.create_foreign_key("fk_users_id", 'environments', 'users', ['creator_id'], ['id'])
|
||||||
# ### end Alembic commands ###
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
def downgrade():
|
def downgrade():
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
op.drop_constraint("fk_application_roles_id", 'environments', type_='foreignkey')
|
op.drop_constraint("fk_users_id", 'environments', type_='foreignkey')
|
||||||
op.drop_column('environments', 'creator_role_id')
|
op.drop_column('environments', 'creator_id')
|
||||||
# ### end Alembic commands ###
|
# ### end Alembic commands ###
|
||||||
|
@ -19,13 +19,13 @@ class Applications(BaseDomainClass):
|
|||||||
resource_name = "application"
|
resource_name = "application"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, portfolio, name, description, environment_names):
|
def create(cls, user, portfolio, name, description, environment_names):
|
||||||
application = Application(
|
application = Application(
|
||||||
portfolio=portfolio, name=name, description=description
|
portfolio=portfolio, name=name, description=description
|
||||||
)
|
)
|
||||||
db.session.add(application)
|
db.session.add(application)
|
||||||
|
|
||||||
Environments.create_many(application, environment_names)
|
Environments.create_many(user, application, environment_names)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return application
|
return application
|
||||||
|
@ -11,17 +11,17 @@ from .exceptions import NotFoundError
|
|||||||
|
|
||||||
class Environments(object):
|
class Environments(object):
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, application, name):
|
def create(cls, user, application, name):
|
||||||
environment = Environment(application=application, name=name)
|
environment = Environment(application=application, name=name, creator=user)
|
||||||
db.session.add(environment)
|
db.session.add(environment)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return environment
|
return environment
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_many(cls, application, names):
|
def create_many(cls, user, application, names):
|
||||||
environments = []
|
environments = []
|
||||||
for name in names:
|
for name in names:
|
||||||
environment = Environments.create(application, name)
|
environment = Environments.create(user, application, name)
|
||||||
environments.append(environment)
|
environments.append(environment)
|
||||||
|
|
||||||
db.session.add_all(environments)
|
db.session.add_all(environments)
|
||||||
|
@ -18,8 +18,11 @@ class Environment(
|
|||||||
application_id = Column(ForeignKey("applications.id"), nullable=False)
|
application_id = Column(ForeignKey("applications.id"), nullable=False)
|
||||||
application = relationship("Application")
|
application = relationship("Application")
|
||||||
|
|
||||||
creator_role_id = Column(ForeignKey("application_roles.id"), nullable=False)
|
# User user.id as the foreign key here beacuse the Environment creator may
|
||||||
creator = relationship("ApplicationRole")
|
# not have an application role. We may need to revisit this if we receive any
|
||||||
|
# requirements around tracking an environment's custodian.
|
||||||
|
creator_id = Column(ForeignKey("users.id"), nullable=False)
|
||||||
|
creator = relationship("User")
|
||||||
|
|
||||||
cloud_id = Column(String)
|
cloud_id = Column(String)
|
||||||
root_user_info = Column(JSONB)
|
root_user_info = Column(JSONB)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from flask import redirect, render_template, request as http_request, url_for
|
from flask import redirect, render_template, request as http_request, url_for, g
|
||||||
|
|
||||||
from . import applications_bp
|
from . import applications_bp
|
||||||
from atst.domain.applications import Applications
|
from atst.domain.applications import Applications
|
||||||
@ -24,6 +24,7 @@ def create(portfolio_id):
|
|||||||
if form.validate():
|
if form.validate():
|
||||||
application_data = form.data
|
application_data = form.data
|
||||||
Applications.create(
|
Applications.create(
|
||||||
|
g.current_user,
|
||||||
portfolio,
|
portfolio,
|
||||||
application_data["name"],
|
application_data["name"],
|
||||||
application_data["description"],
|
application_data["description"],
|
||||||
|
@ -230,7 +230,9 @@ def new_environment(application_id):
|
|||||||
env_form = EditEnvironmentForm(formdata=http_request.form)
|
env_form = EditEnvironmentForm(formdata=http_request.form)
|
||||||
|
|
||||||
if env_form.validate():
|
if env_form.validate():
|
||||||
Environments.create(application=application, name=env_form.name.data)
|
Environments.create(
|
||||||
|
g.current_user, application=application, name=env_form.name.data
|
||||||
|
)
|
||||||
|
|
||||||
flash("environment_added", environment_name=env_form.data["name"])
|
flash("environment_added", environment_name=env_form.data["name"])
|
||||||
|
|
||||||
|
@ -220,6 +220,7 @@ def add_applications_to_portfolio(portfolio):
|
|||||||
applications = random_applications()
|
applications = random_applications()
|
||||||
for application_data in applications:
|
for application_data in applications:
|
||||||
application = Applications.create(
|
application = Applications.create(
|
||||||
|
portfolio.owner,
|
||||||
portfolio=portfolio,
|
portfolio=portfolio,
|
||||||
name=application_data["name"],
|
name=application_data["name"],
|
||||||
description=application_data["description"],
|
description=application_data["description"],
|
||||||
@ -278,7 +279,7 @@ def create_demo_portfolio(name, data):
|
|||||||
portfolio=portfolio, name=mock_application.name, description=""
|
portfolio=portfolio, name=mock_application.name, description=""
|
||||||
)
|
)
|
||||||
env_names = [env.name for env in mock_application.environments]
|
env_names = [env.name for env in mock_application.environments]
|
||||||
envs = Environments.create_many(application, env_names)
|
envs = Environments.create_many(portfolio.owner, application, env_names)
|
||||||
db.session.add(application)
|
db.session.add(application)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ from tests.factories import (
|
|||||||
def test_create_application_with_multiple_environments():
|
def test_create_application_with_multiple_environments():
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
application = Applications.create(
|
application = Applications.create(
|
||||||
portfolio, "My Test Application", "Test", ["dev", "prod"]
|
portfolio.owner, portfolio, "My Test Application", "Test", ["dev", "prod"]
|
||||||
)
|
)
|
||||||
|
|
||||||
assert application.portfolio == portfolio
|
assert application.portfolio == portfolio
|
||||||
|
@ -21,7 +21,9 @@ from tests.factories import (
|
|||||||
@pytest.mark.skip(reason="Reinstate and update once jobs api is up")
|
@pytest.mark.skip(reason="Reinstate and update once jobs api is up")
|
||||||
def test_create_environments():
|
def test_create_environments():
|
||||||
application = ApplicationFactory.create()
|
application = ApplicationFactory.create()
|
||||||
environments = Environments.create_many(application, ["Staging", "Production"])
|
environments = Environments.create_many(
|
||||||
|
application.portfolio.owner, application, ["Staging", "Production"]
|
||||||
|
)
|
||||||
for env in environments:
|
for env in environments:
|
||||||
assert env.cloud_id is not None
|
assert env.cloud_id is not None
|
||||||
|
|
||||||
|
@ -71,7 +71,11 @@ def test_update_portfolio_role_role(portfolio, portfolio_owner):
|
|||||||
|
|
||||||
def test_scoped_portfolio_for_admin_missing_view_apps_perms(portfolio_owner, portfolio):
|
def test_scoped_portfolio_for_admin_missing_view_apps_perms(portfolio_owner, portfolio):
|
||||||
Applications.create(
|
Applications.create(
|
||||||
portfolio, "My Application 2", "My application 2", ["dev", "staging", "prod"]
|
portfolio.owner,
|
||||||
|
portfolio,
|
||||||
|
"My Application 2",
|
||||||
|
"My application 2",
|
||||||
|
["dev", "staging", "prod"],
|
||||||
)
|
)
|
||||||
restricted_admin = UserFactory.create()
|
restricted_admin = UserFactory.create()
|
||||||
PortfolioRoleFactory.create(
|
PortfolioRoleFactory.create(
|
||||||
@ -90,7 +94,11 @@ def test_scoped_portfolio_returns_all_applications_for_portfolio_admin(
|
|||||||
):
|
):
|
||||||
for _ in range(5):
|
for _ in range(5):
|
||||||
Applications.create(
|
Applications.create(
|
||||||
portfolio, "My Application", "My application", ["dev", "staging", "prod"]
|
portfolio.owner,
|
||||||
|
portfolio,
|
||||||
|
"My Application",
|
||||||
|
"My application",
|
||||||
|
["dev", "staging", "prod"],
|
||||||
)
|
)
|
||||||
|
|
||||||
admin = UserFactory.create()
|
admin = UserFactory.create()
|
||||||
@ -109,7 +117,11 @@ def test_scoped_portfolio_returns_all_applications_for_portfolio_owner(
|
|||||||
):
|
):
|
||||||
for _ in range(5):
|
for _ in range(5):
|
||||||
Applications.create(
|
Applications.create(
|
||||||
portfolio, "My Application", "My application", ["dev", "staging", "prod"]
|
portfolio.owner,
|
||||||
|
portfolio,
|
||||||
|
"My Application",
|
||||||
|
"My application",
|
||||||
|
["dev", "staging", "prod"],
|
||||||
)
|
)
|
||||||
|
|
||||||
scoped_portfolio = Portfolios.get(portfolio_owner, portfolio.id)
|
scoped_portfolio = Portfolios.get(portfolio_owner, portfolio.id)
|
||||||
|
@ -185,6 +185,7 @@ class EnvironmentFactory(Base):
|
|||||||
|
|
||||||
name = factory.Faker("domain_word")
|
name = factory.Faker("domain_word")
|
||||||
application = factory.SubFactory(ApplicationFactory)
|
application = factory.SubFactory(ApplicationFactory)
|
||||||
|
creator = factory.SubFactory(UserFactory)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _create(cls, model_class, *args, **kwargs):
|
def _create(cls, model_class, *args, **kwargs):
|
||||||
|
@ -12,7 +12,11 @@ def test_add_user_to_environment():
|
|||||||
|
|
||||||
portfolio = PortfolioFactory.create(owner=owner)
|
portfolio = PortfolioFactory.create(owner=owner)
|
||||||
application = Applications.create(
|
application = Applications.create(
|
||||||
portfolio, "my test application", "It's mine.", ["dev", "staging", "prod"]
|
portfolio.owner,
|
||||||
|
portfolio,
|
||||||
|
"my test application",
|
||||||
|
"It's mine.",
|
||||||
|
["dev", "staging", "prod"],
|
||||||
)
|
)
|
||||||
dev_environment = application.environments[0]
|
dev_environment = application.environments[0]
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ def test_update_environment_failure(client, user_session):
|
|||||||
def test_application_settings(client, user_session):
|
def test_application_settings(client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
application = Applications.create(
|
application = Applications.create(
|
||||||
|
portfolio.owner,
|
||||||
portfolio,
|
portfolio,
|
||||||
"Snazzy Application",
|
"Snazzy Application",
|
||||||
"A new application for me and my friends",
|
"A new application for me and my friends",
|
||||||
@ -86,6 +87,7 @@ def test_application_settings(client, user_session):
|
|||||||
def test_edit_application_environments_obj(app, client, user_session):
|
def test_edit_application_environments_obj(app, client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
application = Applications.create(
|
application = Applications.create(
|
||||||
|
portfolio.owner,
|
||||||
portfolio,
|
portfolio,
|
||||||
"Snazzy Application",
|
"Snazzy Application",
|
||||||
"A new application for me and my friends",
|
"A new application for me and my friends",
|
||||||
@ -127,6 +129,7 @@ def test_edit_application_environments_obj(app, client, user_session):
|
|||||||
def test_data_for_app_env_roles_form(app, client, user_session):
|
def test_data_for_app_env_roles_form(app, client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
application = Applications.create(
|
application = Applications.create(
|
||||||
|
portfolio.owner,
|
||||||
portfolio,
|
portfolio,
|
||||||
"Snazzy Application",
|
"Snazzy Application",
|
||||||
"A new application for me and my friends",
|
"A new application for me and my friends",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user