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.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()
|
||||||
|
@ -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",
|
||||||
|
@ -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(
|
||||||
|
@ -18,7 +18,7 @@ export default {
|
|||||||
|
|
||||||
props: {
|
props: {
|
||||||
choices: Array,
|
choices: Array,
|
||||||
initialData: String
|
initialData: Object
|
||||||
},
|
},
|
||||||
|
|
||||||
data: function () {
|
data: function () {
|
||||||
|
@ -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'>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user