diff --git a/app/main/views/manage_users.py b/app/main/views/manage_users.py index 4c0642ead..cbbff87c8 100644 --- a/app/main/views/manage_users.py +++ b/app/main/views/manage_users.py @@ -18,19 +18,11 @@ from app.utils import user_has_permissions @login_required @user_has_permissions() def manage_users(service_id): - users = sorted( - user_api_client.get_users_for_service(service_id=service_id) + [ - invite for invite in invite_api_client.get_invites_for_service(service_id=service_id) - if invite.status != 'accepted' - ], - key=lambda user: user.email_address, - ) - return render_template( 'views/manage-users.html', - users=users, + users=current_service.team_members, current_user=current_user, - show_search_box=(len(users) > 7), + show_search_box=(len(current_service.team_members) > 7), form=SearchUsersForm(), permissions=permissions, ) diff --git a/app/models/service.py b/app/models/service.py index aa86ac35e..3337d43ca 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -6,6 +6,7 @@ from app.notify_client.api_key_api_client import api_key_api_client from app.notify_client.billing_api_client import billing_api_client from app.notify_client.email_branding_client import email_branding_client from app.notify_client.inbound_number_client import inbound_number_client +from app.notify_client.invite_api_client import invite_api_client from app.notify_client.job_api_client import job_api_client from app.notify_client.organisations_api_client import organisations_client from app.notify_client.service_api_client import service_api_client @@ -98,6 +99,16 @@ class Service(): def has_jobs(self): return job_api_client.has_jobs(self.id) + @cached_property + def team_members(self): + return sorted( + ( + invite_api_client.get_invites_for_service(service_id=self.id) + + user_api_client.get_users_for_service(service_id=self.id) + ), + key=lambda user: user.email_address, + ) + @cached_property def has_team_members(self): return user_api_client.get_count_of_users_with_permission( diff --git a/app/notify_client/invite_api_client.py b/app/notify_client/invite_api_client.py index 9ea677157..b16f8841c 100644 --- a/app/notify_client/invite_api_client.py +++ b/app/notify_client/invite_api_client.py @@ -28,11 +28,16 @@ class InviteApiClient(NotifyAdminAPIClient): return InvitedUser(**resp['data']) def get_invites_for_service(self, service_id): - endpoint = '/service/{}/invite'.format(service_id) - resp = self.get(endpoint) - invites = resp['data'] - invited_users = self._get_invited_users(invites) - return invited_users + return [ + InvitedUser(**invite) + for invite in self._get_invites_for_service(service_id) + if invite['status'] != 'accepted' + ] + + def _get_invites_for_service(self, service_id): + return self.get( + '/service/{}/invite'.format(service_id) + )['data'] def check_token(self, token): resp = self.get(url='/invite/service/{}'.format(token)) @@ -51,12 +56,5 @@ class InviteApiClient(NotifyAdminAPIClient): self.post(url='/service/{0}/invite/{1}'.format(service_id, invited_user_id), data=data) - def _get_invited_users(self, invites): - invited_users = [] - for invite in invites: - invited_user = InvitedUser(**invite) - invited_users.append(invited_user) - return invited_users - invite_api_client = InviteApiClient() diff --git a/app/templates/views/manage-users.html b/app/templates/views/manage-users.html index 5de9f9e95..8793ae8e3 100644 --- a/app/templates/views/manage-users.html +++ b/app/templates/views/manage-users.html @@ -35,17 +35,17 @@