invitations: Fix email validation errors for deactivated accounts.

This provides a much clearer error message when trying to invite a
user who has a deactivated account.

Fixes part of #8144.
This commit is contained in:
Challa Venkata Raghava Reddy
2019-02-14 18:29:23 +05:30
committed by Tim Abbott
parent 62007d3e38
commit e7fb19c8b0
2 changed files with 6 additions and 5 deletions

View File

@@ -4754,9 +4754,10 @@ def validate_email_for_realm(target_realm: Realm, email: str) -> None:
if existing_user_profile.is_mirror_dummy: if existing_user_profile.is_mirror_dummy:
raise AssertionError("Mirror dummy user is already active!") raise AssertionError("Mirror dummy user is already active!")
# Other users should not already exist at all. # Other users should not already exist at all.
raise ValidationError('%s already has an account' % (email,)) raise ValidationError('%s already has an account' % (email,), code = _("Already has an account."))
elif not existing_user_profile.is_mirror_dummy: elif not existing_user_profile.is_mirror_dummy:
raise ValidationError('The account for %s has been deactivated' % (email,)) raise ValidationError('The account for %s has been deactivated' % (email,),
code = _("Account has been deactivated."))
def validate_email(user_profile: UserProfile, email: str) -> Tuple[Optional[str], Optional[str]]: def validate_email(user_profile: UserProfile, email: str) -> Tuple[Optional[str], Optional[str]]:
try: try:
@@ -4775,8 +4776,8 @@ def validate_email(user_profile: UserProfile, email: str) -> Tuple[Optional[str]
try: try:
validate_email_for_realm(user_profile.realm, email) validate_email_for_realm(user_profile.realm, email)
except ValidationError: except ValidationError as error:
return None, _("Already has an account.") return None, (error.code)
return None, None return None, None

View File

@@ -3041,7 +3041,7 @@ class EmailValidatorTestCase(ZulipTestCase):
cordelia.save() cordelia.save()
_, error = validate_email(inviter, cordelia.email) _, error = validate_email(inviter, cordelia.email)
self.assertEqual(error, 'Already has an account.') self.assertEqual(error, 'Account has been deactivated.')
_, error = validate_email(inviter, 'fred-is-fine@zulip.com') _, error = validate_email(inviter, 'fred-is-fine@zulip.com')
self.assertEqual(error, None) self.assertEqual(error, None)