From c3157596be43f35e5c1758fa34c8ccdce9250f0a Mon Sep 17 00:00:00 2001 From: Patrick Smith Date: Thu, 7 Feb 2019 15:38:28 -0500 Subject: [PATCH] Add property to get number of users in an application --- atst/models/application.py | 8 +++++++ templates/portfolios/applications/index.html | 2 +- tests/models/test_application.py | 22 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/models/test_application.py diff --git a/atst/models/application.py b/atst/models/application.py index 02c7185a..050b13d7 100644 --- a/atst/models/application.py +++ b/atst/models/application.py @@ -17,6 +17,14 @@ class Application(Base, mixins.TimestampsMixin, mixins.AuditableMixin): portfolio = relationship("Portfolio") environments = relationship("Environment", back_populates="application") + @property + def users(self): + return set([user for env in self.environments for user in env.users]) + + @property + def num_users(self): + return len(self.users) + @property def displayname(self): return self.name diff --git a/templates/portfolios/applications/index.html b/templates/portfolios/applications/index.html index ec0f1530..3ec59952 100644 --- a/templates/portfolios/applications/index.html +++ b/templates/portfolios/applications/index.html @@ -48,7 +48,7 @@ {% endif %} Team - 11 + {{ application.num_users }} diff --git a/tests/models/test_application.py b/tests/models/test_application.py new file mode 100644 index 00000000..7701fbaf --- /dev/null +++ b/tests/models/test_application.py @@ -0,0 +1,22 @@ +from atst.domain.environments import Environments +from tests.factories import ApplicationFactory, UserFactory + + +def test_application_num_users(): + application = ApplicationFactory.create( + environments=[{"name": "dev"}, {"name": "staging"}, {"name": "prod"}] + ) + assert application.num_users == 0 + + first_env = application.environments[0] + user1 = UserFactory() + Environments.add_member(first_env, user1, "developer") + assert application.num_users == 1 + + second_env = application.environments[-1] + Environments.add_member(second_env, user1, "developer") + assert application.num_users == 1 + + user2 = UserFactory() + Environments.add_member(second_env, user2, "developer") + assert application.num_users == 2