diff --git a/atst/domain/environment_roles.py b/atst/domain/environment_roles.py index 366b61b2..dab6d8b8 100644 --- a/atst/domain/environment_roles.py +++ b/atst/domain/environment_roles.py @@ -7,7 +7,7 @@ from atst.models import EnvironmentRole class EnvironmentRoles(object): @classmethod def create(cls, user, environment, role): - if environment.application.has_member(user): + if environment.application.has_member(user.id): env_role = EnvironmentRole(user=user, environment=environment, role=role) if not user.cloud_id: user.cloud_id = app.csp.cloud.create_user(user) diff --git a/atst/domain/environments.py b/atst/domain/environments.py index f604808f..76873a60 100644 --- a/atst/domain/environments.py +++ b/atst/domain/environments.py @@ -68,7 +68,7 @@ class Environments(object): def update_env_role(cls, environment, user, new_role): updated = False - if environment.application.has_member(user): + if environment.application.has_member(user.id): if new_role is None: updated = EnvironmentRoles.delete(user.id, environment.id) else: diff --git a/atst/models/application.py b/atst/models/application.py index 43c667c3..95c03a43 100644 --- a/atst/models/application.py +++ b/atst/models/application.py @@ -9,7 +9,6 @@ from atst.models.application_role import ( ApplicationRole, Status as ApplicationRoleStatuses, ) - from atst.database import db @@ -52,8 +51,9 @@ class Application( def displayname(self): return self.name - def has_member(self, user): - return user in self.users + def has_member(self, user_id): + user_ids = set(str(user.id) for user in self.users) + return str(user_id) in user_ids def __repr__(self): # pragma: no cover return "".format( diff --git a/atst/routes/applications/settings.py b/atst/routes/applications/settings.py index 169af8c9..12194ecf 100644 --- a/atst/routes/applications/settings.py +++ b/atst/routes/applications/settings.py @@ -7,6 +7,8 @@ from atst.domain.applications import Applications from atst.forms.application import ApplicationForm from atst.forms.app_settings import EnvironmentRolesForm from atst.domain.authz.decorator import user_can_access_decorator as user_can +from atst.domain.exceptions import UnauthorizedError + from atst.models.permissions import Permissions from atst.utils.flash import formatted_flash as flash diff --git a/tests/models/test_application.py b/tests/models/test_application.py index ae73f4a6..b576eb18 100644 --- a/tests/models/test_application.py +++ b/tests/models/test_application.py @@ -45,10 +45,10 @@ def test_has_app_member(): user = UserFactory.create() app = ApplicationFactory.create() ApplicationRoleFactory.create(user=user, application=app) - assert app.has_member(user) + assert app.has_member(user.id) def test_does_not_have_app_member(): user = UserFactory.create() app = ApplicationFactory.create() - assert not app.has_member(user) + assert not app.has_member(user.id)