Write query to change the environment role based on mock data
This commit is contained in:
parent
c3da34e7cb
commit
79c357dcab
@ -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()
|
||||
|
@ -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",
|
||||
|
@ -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(
|
||||
|
@ -18,7 +18,7 @@ export default {
|
||||
|
||||
props: {
|
||||
choices: Array,
|
||||
initialData: String
|
||||
initialData: Object
|
||||
},
|
||||
|
||||
data: function () {
|
||||
|
@ -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'>
|
||||
|
Loading…
x
Reference in New Issue
Block a user