send_custom_email: Never email users who haven't agreed to ToS.

The `create_user` API and data import tools can result in our having
active users in the database who haven't intentionally created a Zulip
account or agreed to the ToS; we should never email such users.

The check for `TOS_VERSION is not None` is necessary for the
development environment, which has `TERMS_OF_SERVICE` set but not
`TOS_VERSION`.

It's likely that we will want this check in other places as well.
This commit is contained in:
Tim Abbott
2021-05-19 13:42:49 -07:00
parent bd957bb5a2
commit 323152c5fd

View File

@@ -1,6 +1,8 @@
from argparse import ArgumentParser
from typing import Any
from django.conf import settings
from zerver.lib.management import CommandError, ZulipBaseCommand
from zerver.lib.send_email import send_custom_email
from zerver.models import Realm, UserProfile
@@ -86,6 +88,9 @@ class Command(ZulipBaseCommand):
)
raise error
# Only email users who've agreed to the terms of service.
if settings.TOS_VERSION is not None:
users = users.exclude(tos_version=None)
send_custom_email(users, options)
if options["dry_run"]: