def do_change_default_sending_stream( user_profile: UserProfile, stream: Optional[Stream], *, acting_user: Optional[UserProfile]) -> None: old_value = user_profile.default_sending_stream_id user_profile.default_sending_stream = stream user_profile.save(update_fields=["default_sending_stream"]) event_time = timezone_now() RealmAuditLog.objects.create( realm=user_profile.realm, event_type=RealmAuditLog.USER_DEFAULT_SENDING_STREAM_CHANGED, event_time=event_time, modified_user=user_profile, acting_user=acting_user, extra_data=orjson.dumps({ RealmAuditLog.OLD_VALUE: old_value, RealmAuditLog.NEW_VALUE: None if stream is None else stream.id, }).decode(), ) if user_profile.is_bot: if stream: stream_name: Optional[str] = stream.name else: stream_name = None event = dict( type="realm_bot", op="update", bot=dict( user_id=user_profile.id, default_sending_stream=stream_name, ), ) transaction.on_commit(lambda: send_event( user_profile.realm, event, bot_owner_user_ids(user_profile), ))