From ffc95204be8a0f2280f1543d4eb0043cf445e758 Mon Sep 17 00:00:00 2001 From: Prakhar Pratyush Date: Thu, 27 Jun 2024 19:10:05 +0530 Subject: [PATCH] create_user: Send initial realm messages before process_new_human_user. This prep commit reorders code blocks in 'do_create_user' to call the function 'send_initial_realm_messages' before 'process_new_human_user'. This is required because for the first user (who creates realm) we need to send the onboarding messages before adding message history (performed by process_new_human_user) otherwise messages won't be starred as required. This commit also takes care of NOT marking the onboarding messages as 'historical' for the realm creator. --- zerver/actions/create_user.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/zerver/actions/create_user.py b/zerver/actions/create_user.py index 8187ca817e..7f652492b3 100644 --- a/zerver/actions/create_user.py +++ b/zerver/actions/create_user.py @@ -126,6 +126,7 @@ def set_up_streams_for_new_human_user( prereg_user: Optional[PreregistrationUser] = None, default_stream_groups: Sequence[DefaultStreamGroup] = [], add_initial_stream_subscriptions: bool = True, + realm_creation: bool = False, ) -> None: realm = user_profile.realm @@ -165,10 +166,15 @@ def set_up_streams_for_new_human_user( acting_user=acting_user, ) - add_new_user_history(user_profile, streams) + add_new_user_history(user_profile, streams, realm_creation=realm_creation) -def add_new_user_history(user_profile: UserProfile, streams: Iterable[Stream]) -> None: +def add_new_user_history( + user_profile: UserProfile, + streams: Iterable[Stream], + *, + realm_creation: bool = False, +) -> None: """ Give the user some messages in their feed, so that they can learn how to use the home view in a realistic way after finishing the tutorial. @@ -217,9 +223,11 @@ def add_new_user_history(user_profile: UserProfile, streams: Iterable[Stream]) - # Create UserMessage rows for the backfill. ums_to_create = [] for message_id in backfill_message_ids: - um = UserMessage( - user_profile=user_profile, message_id=message_id, flags=UserMessage.flags.historical - ) + um = UserMessage(user_profile=user_profile, message_id=message_id) + # Only onboarding messages are available for realm creator. + # They are not marked as historical. + if not realm_creation: + um.flags = UserMessage.flags.historical if message_id in older_message_ids: um.flags |= UserMessage.flags.read ums_to_create.append(um) @@ -247,6 +255,7 @@ def process_new_human_user( prereg_user=prereg_user, default_stream_groups=default_stream_groups, add_initial_stream_subscriptions=add_initial_stream_subscriptions, + realm_creation=realm_creation, ) realm = user_profile.realm @@ -568,6 +577,12 @@ def do_create_user( prereg_realm.created_user = user_profile prereg_realm.save(update_fields=["created_user"]) + if realm_creation: + from zerver.lib.onboarding import send_initial_realm_messages + + with override_language(realm.default_language): + send_initial_realm_messages(realm) + if bot_type is None: process_new_human_user( user_profile, @@ -577,12 +592,6 @@ def do_create_user( add_initial_stream_subscriptions=add_initial_stream_subscriptions, ) - if realm_creation: - from zerver.lib.onboarding import send_initial_realm_messages - - with override_language(realm.default_language): - send_initial_realm_messages(realm) - return user_profile