diff --git a/zerver/management/commands/enqueue_digest_emails.py b/zerver/management/commands/enqueue_digest_emails.py index 9f6568c523..2fcf4e37c0 100644 --- a/zerver/management/commands/enqueue_digest_emails.py +++ b/zerver/management/commands/enqueue_digest_emails.py @@ -9,7 +9,7 @@ from django.conf import settings from django.core.management.base import BaseCommand from zerver.lib.queue import queue_json_publish -from zerver.models import UserActivity, UserProfile, get_realm, Realm +from zerver.models import UserActivity, UserProfile, Realm ## Logging setup ## @@ -57,7 +57,7 @@ def queue_digest_recipient(user_profile, cutoff): "cutoff": cutoff.strftime('%s')} queue_json_publish("digest_emails", event, lambda event: None) -def domains_for_this_deployment(): +def realms_for_this_deployment(): # type: () -> List[str] if settings.ZILENCER_ENABLED: # Voyager deployments don't have a Deployment entry. @@ -70,18 +70,18 @@ def domains_for_this_deployment(): except Deployment.DoesNotExist: raise ValueError("digest: Unable to determine deployment.") - return [r.domain for r in deployment.realms.all()] + return [r.string_id for r in deployment.realms.all()] # Voyager and development. return [] -def should_process_digest(domain, deployment_domains): +def should_process_digest(realm_str, deployment_realms): # type: (str, List[str]) -> bool - if domain in settings.SYSTEM_ONLY_REALMS: + if realm_str in settings.SYSTEM_ONLY_REALMS: # Don't try to send emails to system-only realms return False if settings.PRODUCTION and not settings.VOYAGER: # zulip.com or staging.zulip.com - return domain in deployment_domains + return realm_str in deployment_realms return True class Command(BaseCommand): @@ -97,16 +97,13 @@ in a while. if datetime.datetime.utcnow().weekday() not in VALID_DIGEST_DAYS: return - deployment_domains = domains_for_this_deployment() + deployment_realms = realms_for_this_deployment() for realm in Realm.objects.filter(deactivated=False, show_digest_email=True): - domain = realm.domain - if not should_process_digest(domain, deployment_domains): + if not should_process_digest(realm.string_id, deployment_realms): continue - string_id = realm.string_id user_profiles = UserProfile.objects.filter( - realm=get_realm(string_id), is_active=True, is_bot=False, - enable_digest_emails=True) + realm=realm, is_active=True, is_bot=False, enable_digest_emails=True) for user_profile in user_profiles: cutoff = last_business_day() diff --git a/zerver/models.py b/zerver/models.py index a636f83047..846cc6a3ad 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -270,7 +270,7 @@ def get_unique_open_realm(): # On production installations, the (usually "zulip.com") system # realm is an empty realm just used for system bots, so don't # include it in this accounting. - realms = realms.exclude(domain__in=settings.SYSTEM_ONLY_REALMS) + realms = realms.exclude(string_id__in=settings.SYSTEM_ONLY_REALMS) if len(realms) != 1: return None realm = realms[0] diff --git a/zerver/tests/tests.py b/zerver/tests/tests.py index 1001932f6b..57943e37bc 100644 --- a/zerver/tests/tests.py +++ b/zerver/tests/tests.py @@ -2283,7 +2283,7 @@ class TestOpenRealms(ZulipTestCase): mit_realm.save() self.assertTrue(completely_open(mit_realm)) self.assertEqual(get_unique_open_realm(), None) - with self.settings(SYSTEM_ONLY_REALMS={"zulip.com"}): + with self.settings(SYSTEM_ONLY_REALMS={"zulip"}): self.assertEqual(get_unique_open_realm(), mit_realm) mit_realm.restricted_to_domain = True mit_realm.save() diff --git a/zproject/settings.py b/zproject/settings.py index fa506f0621..f08ea30aba 100644 --- a/zproject/settings.py +++ b/zproject/settings.py @@ -185,7 +185,7 @@ DEFAULT_SETTINGS = {'TWITTER_CONSUMER_KEY': '', 'REALM_CREATION_LINK_VALIDITY_DAYS': 7, 'TERMS_OF_SERVICE': None, 'TOS_VERSION': None, - 'SYSTEM_ONLY_REALMS': {"zulip.com"}, + 'SYSTEM_ONLY_REALMS': {"zulip"}, 'FIRST_TIME_TOS_TEMPLATE': None, 'USING_PGROONGA': False, 'POST_MIGRATION_CACHE_FLUSHING': False,