send_zulip_update_announcements: Log updates in the post-deploy hook.

This commit is contained in:
Alex Vandiver
2025-07-25 23:07:08 +00:00
committed by Tim Abbott
parent b98d3fc7c4
commit 2909d4917c
4 changed files with 30 additions and 5 deletions

View File

@@ -2,4 +2,4 @@
set -e
/home/zulip/deployments/current/manage.py send_zulip_update_announcements --automated
/home/zulip/deployments/current/manage.py send_zulip_update_announcements --automated --progress

View File

@@ -632,15 +632,26 @@ def send_messages_and_update_level(
realm.save(update_fields=["zulip_update_announcements_level"])
def send_zulip_update_announcements(skip_delay: bool) -> None:
def send_zulip_update_announcements(skip_delay: bool, progress: bool = False) -> None:
latest_zulip_update_announcements_level = get_latest_zulip_update_announcements_level()
for realm in get_realms_behind_zulip_update_announcements_level(
realms = get_realms_behind_zulip_update_announcements_level(
level=latest_zulip_update_announcements_level
):
)
if len(realms) == 0:
return
if progress: # nocoverage
print(f"Sending update announcements to {len(realms)} realms")
for i, realm in enumerate(realms, start=1):
try:
send_zulip_update_announcements_to_realm(realm, skip_delay)
except Exception as e: # nocoverage
logging.exception(e)
finally:
if progress and i % 50 == 0: # nocoverage
print(f"Processed {i}/{len(realms)} realms...")
if progress: # nocoverage
print("Done!")
def send_zulip_update_announcements_to_realm(realm: Realm, skip_delay: bool) -> None:

View File

@@ -14,6 +14,7 @@ class Command(ZulipBaseCommand):
@override
def add_arguments(self, parser: ArgumentParser) -> None:
parser.add_argument("--progress", action="store_true", help="Log every 50 completed realms")
parser.add_argument(
"--skip-delay",
action="store_true",
@@ -35,4 +36,6 @@ class Command(ZulipBaseCommand):
).update(zulip_update_announcements_level=options["reset_level"])
return
send_zulip_update_announcements(skip_delay=options["skip_delay"])
send_zulip_update_announcements(
skip_delay=options["skip_delay"], progress=options["progress"]
)

View File

@@ -166,6 +166,17 @@ class ZulipUpdateAnnouncementsTest(ZulipTestCase):
self.assertEqual(stream_messages[0].content, "Announcement message 5.")
self.assertEqual(realm.zulip_update_announcements_level, 5)
# Calling send_zulip_update_announcements again does nothing
with time_machine.travel(now + timedelta(days=20), tick=False):
send_zulip_update_announcements(skip_delay=False)
realm.refresh_from_db()
stream_messages = Message.objects.filter(
realm=realm,
date_sent__gte=now + timedelta(days=20),
).order_by("id")
self.assert_length(stream_messages, 0)
self.assertEqual(realm.zulip_update_announcements_level, 5)
def test_send_zulip_update_announcements_with_stream_configured(self) -> None:
with mock.patch(
"zerver.lib.zulip_update_announcements.zulip_update_announcements",