management commands: Fix incorrect use of user_profile.email.

All of these management commands should be interacting with
.delivery_email; this results in buggy behavior with
EMAIL_ADDRESS_VISIBILITY_ADMINS.
This commit is contained in:
Tim Abbott
2019-11-15 16:42:36 -08:00
parent 0632d26e5e
commit e124837cdc
9 changed files with 14 additions and 13 deletions

View File

@@ -33,4 +33,4 @@ class Command(ZulipBaseCommand):
was_there_already = user_profile.id in {tup[0].id for tup in already_subscribed}
print("%s %s to %s" % (
"Already subscribed" if was_there_already else "Subscribed",
user_profile.email, stream_name))
user_profile.delivery_email, stream_name))

View File

@@ -24,14 +24,14 @@ class Command(ZulipBaseCommand):
user_profile = self.get_user(options['email'], realm)
print("Deactivating %s (%s) - %s" % (user_profile.full_name,
user_profile.email,
user_profile.delivery_email,
user_profile.realm.string_id))
print("%s has the following active sessions:" % (user_profile.email,))
print("%s has the following active sessions:" % (user_profile.delivery_email,))
for session in user_sessions(user_profile):
print(session.expire_date, session.get_decoded())
print("")
print("%s has %s active bots that will also be deactivated." % (
user_profile.email,
user_profile.delivery_email,
UserProfile.objects.filter(
is_bot=True, is_active=True, bot_owner=user_profile
).count()

View File

@@ -37,7 +37,7 @@ class Command(ZulipBaseCommand):
if os.path.exists(output_dir):
shutil.rmtree(output_dir)
os.makedirs(output_dir)
print("Exporting user %s" % (user_profile.email,))
print("Exporting user %s" % (user_profile.delivery_email,))
do_export_user(user_profile, output_dir)
print("Finished exporting to %s; tarring" % (output_dir,))
tarball_path = output_dir.rstrip('/') + '.tar.gz'

View File

@@ -32,6 +32,6 @@ class Command(ZulipBaseCommand):
for user_profile in user_profiles:
if user_profile in not_subscribed_users:
print("%s was not subscribed" % (user_profile.email,))
print("%s was not subscribed" % (user_profile.delivery_email,))
else:
print("Removed %s from %s" % (user_profile.email, stream_name))
print("Removed %s from %s" % (user_profile.delivery_email, stream_name))

View File

@@ -40,7 +40,7 @@ class Command(ZulipBaseCommand):
"""
for user_profile in users:
context = {
'email': user_profile.email,
'email': user_profile.delivery_email,
'reset_url': generate_password_reset_url(user_profile, default_token_generator),
'realm_uri': user_profile.realm.uri,
'realm_name': user_profile.realm.name,

View File

@@ -17,7 +17,7 @@ class Command(ZulipBaseCommand):
if users:
print('Admins:\n')
for user in users:
print(' %s (%s)' % (user.email, user.full_name))
print(' %s (%s)' % (user.delivery_email, user.full_name))
else:
print('There are no admins for this realm!')

View File

@@ -12,12 +12,13 @@ from zerver.models import Realm, UserProfile
def get_users_from_emails(emails: List[str],
filter_kwargs: Dict[str, Realm]) -> List[UserProfile]:
# Bug: Ideally, this would be case-insensitive like our other email queries.
users = UserProfile.objects.filter(
email__in=emails,
delivery_email__in=emails,
**filter_kwargs)
if len(users) != len(emails):
user_emails_found = {user.email for user in users}
user_emails_found = {user.delivery_email for user in users}
user_emails_not_found = '\n'.join(set(emails) - user_emails_found)
raise CommandError('Users with the following emails were not found:\n\n%s\n\n'
'Check if they are correct.' % (user_emails_not_found,))

View File

@@ -24,7 +24,7 @@ def sync_ldap_user_data(user_profiles: List[UserProfile]) -> None:
try:
sync_user_from_ldap(u, logger)
except ZulipLDAPException as e:
logger.error("Error attempting to update user %s:" % (u.email,))
logger.error("Error attempting to update user %s:" % (u.delivery_email,))
logger.error(e)
logger.info("Finished update.")

View File

@@ -26,4 +26,4 @@ class Command(ZulipBaseCommand):
else:
already_disabled_prefix = "(already off) "
print("%s%s <%s>" % (already_disabled_prefix, user_profile.full_name,
user_profile.email))
user_profile.delivery_email))