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.database import db
from atst.models.environment import Environment from atst.models.environment import Environment
from atst.models.environment_role import EnvironmentRole, CSPRole from atst.models.environment_role import EnvironmentRole, CSPRole
from atst.models.project import Project from atst.models.project import Project
from atst.domain.users import Users
from .exceptions import NotFoundError
class Environments(object): class Environments(object):
@ -39,3 +44,28 @@ class Environments(object):
.filter(Project.id == Environment.project_id) .filter(Project.id == Environment.project_id)
.all() .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 sqlalchemy.orm import relationship
from atst.models import Base, types, mixins from atst.models import Base, types, mixins
from atst.database import db
from .types import Id
class CSPRole(Enum): 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_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False)
user = relationship("User", backref="environment_roles") 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( Index(
"environments_role_user_environment", "environments_role_user_environment",

View File

@ -242,7 +242,13 @@ def update_member(workspace_id, member_id):
) )
new_role_name = member.role_displayname new_role_name = member.role_displayname
if form.data["environment_role"]: 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( return redirect(
url_for( url_for(

View File

@ -18,7 +18,7 @@ export default {
props: { props: {
choices: Array, choices: Array,
initialData: String initialData: Object
}, },
data: function () { 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> <a class='action-group__action icon-link icon-link--danger' v-on:click="closeModal('rolesModal')">Cancel</a>
</div> </div>
</div> </div>
</div>
{% endcall %} {% endcall %}
<div is='toggler' default-visible class='block-list project-list-item'> <div is='toggler' default-visible class='block-list project-list-item'>