diff --git a/app/main/views/invites.py b/app/main/views/invites.py index e5bd43de9..7c48a3f44 100644 --- a/app/main/views/invites.py +++ b/app/main/views/invites.py @@ -36,12 +36,7 @@ def accept_invite(token): session['invited_user'] = invited_user.serialize() - try: - existing_user = user_api_client.get_user_by_email(invited_user.email_address) - except HTTPError as ex: - if ex.status_code == 404: - existing_user = False - + existing_user = user_api_client.get_user_by_email_or_none(invited_user.email_address) service_users = user_api_client.get_users_for_service(invited_user.service) if existing_user: diff --git a/app/main/views/sign_in.py b/app/main/views/sign_in.py index 7cad45b81..f678afc40 100644 --- a/app/main/views/sign_in.py +++ b/app/main/views/sign_in.py @@ -29,7 +29,7 @@ def sign_in(): form = LoginForm() if form.validate_on_submit(): - user = user_api_client.get_user_by_email(form.email_address.data) + user = user_api_client.get_user_by_email_or_none(form.email_address.data) user = _get_and_verify_user(user, form.password.data) if user: # Remember me login diff --git a/app/notify_client/user_api_client.py b/app/notify_client/user_api_client.py index 2cb970fba..b4ad5150e 100644 --- a/app/notify_client/user_api_client.py +++ b/app/notify_client/user_api_client.py @@ -35,6 +35,13 @@ class UserApiClient(BaseAPIClient): user_data = self.get('/user/email', params={'email': email_address}) return User(user_data['data'], max_failed_login_count=self.max_failed_login_count) + def get_user_by_email_or_none(self, email_address): + try: + return self.get_user_by_email(email_address) + except HTTPError as e: + if HTTPError.status_code == 404: + return None + def get_users(self): users_data = self.get("/user")['data'] users = [] @@ -106,15 +113,9 @@ class UserApiClient(BaseAPIClient): self.post(endpoint, data=data) def is_email_unique(self, email_address): - try: - if self.get_user_by_email(email_address): - return False - return True - except HTTPError as ex: - if ex.status_code == 404: - return True - else: - raise ex + if self.get_user_by_email_or_none(email_address): + return False + return True def activate_user(self, user): user.state = 'active'