Write query to change the environment role based on mock data

This commit is contained in:
Montana 2018-09-13 13:36:03 -04:00
parent c3da34e7cb
commit 79c357dcab
5 changed files with 52 additions and 3 deletions

View File

@ -1,7 +1,12 @@
from sqlalchemy.orm.exc import NoResultFound
from atst.database import db
from atst.models.environment import Environment
from atst.models.environment_role import EnvironmentRole, CSPRole
from atst.models.project import Project
from atst.domain.users import Users
from .exceptions import NotFoundError
class Environments(object):
@ -39,3 +44,28 @@ class Environments(object):
.filter(Project.id == Environment.project_id)
.all()
)
def get(cls, environment_id):
try:
env = db.session.query(Environment).filter_by(id=environment_id).one()
except NoResultFound:
raise NotFoundError("environment")
return env
@classmethod
def update_environment_role(cls, environment_data, workspace_user):
# TODO need to check permissions?
new_role = environment_data["user_role_name"]
environment = Environments.get(cls=cls, environment_id=environment_data["id"])
if workspace_user.has_environment_roles:
env_role = EnvironmentRole.get(workspace_user.user_id, environment.id)
env_role.role = new_role
else:
env_role = EnvironmentRole(
user=workspace_user.user,
environment=environment,
role=new_role
)
db.session.add(env_role)
db.session.commit()

View File

@ -4,6 +4,8 @@ from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from atst.models import Base, types, mixins
from atst.database import db
from .types import Id
class CSPRole(Enum):
@ -24,6 +26,18 @@ class EnvironmentRole(Base, mixins.TimestampsMixin):
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False)
user = relationship("User", backref="environment_roles")
@classmethod
def get(cls, user_id, environment_id):
existing_env_role = (
db.session.query(EnvironmentRole)
.filter(
EnvironmentRole.user_id == user_id,
EnvironmentRole.environment_id == environment_id,
)
.one_or_none()
)
return existing_env_role
Index(
"environments_role_user_environment",

View File

@ -242,7 +242,13 @@ def update_member(workspace_id, member_id):
)
new_role_name = member.role_displayname
if form.data["environment_role"]:
print (form.data)
new_env_role = form.data["environment_role"]
environment_data = {
"id": "9432c6a5-2f9d-4c9c-b553-4c175852fb65",
"name": "this environment",
"user_role_name": new_env_role,
}
Environments.update_environment_role(environment_data, member)
return redirect(
url_for(

View File

@ -18,7 +18,7 @@ export default {
props: {
choices: Array,
initialData: String
initialData: Object
},
data: function () {

View File

@ -86,7 +86,6 @@
<a class='action-group__action icon-link icon-link--danger' v-on:click="closeModal('rolesModal')">Cancel</a>
</div>
</div>
</div>
{% endcall %}
<div is='toggler' default-visible class='block-list project-list-item'>