diff --git a/zerver/actions/presence.py b/zerver/actions/presence.py index 3cb6dbf267..57f5cfe1b5 100644 --- a/zerver/actions/presence.py +++ b/zerver/actions/presence.py @@ -1,6 +1,5 @@ import datetime import time -from typing import Optional from django.conf import settings from django.db import transaction @@ -9,8 +8,7 @@ from zerver.actions.user_activity import update_user_activity_interval from zerver.decorator import statsd_increment from zerver.lib.queue import queue_json_publish from zerver.lib.timestamp import datetime_to_timestamp -from zerver.lib.user_status import update_user_status -from zerver.models import Client, UserPresence, UserProfile, UserStatus, active_user_ids, get_client +from zerver.models import Client, UserPresence, UserProfile, active_user_ids, get_client from zerver.tornado.django_api import send_event @@ -146,49 +144,3 @@ def update_user_presence( if new_user_input: update_user_activity_interval(user_profile, log_time) - - -def do_update_user_status( - user_profile: UserProfile, - away: Optional[bool], - status_text: Optional[str], - client_id: int, - emoji_name: Optional[str], - emoji_code: Optional[str], - reaction_type: Optional[str], -) -> None: - if away is None: - status = None - elif away: - status = UserStatus.AWAY - else: - status = UserStatus.NORMAL - - realm = user_profile.realm - - update_user_status( - user_profile_id=user_profile.id, - status=status, - status_text=status_text, - client_id=client_id, - emoji_name=emoji_name, - emoji_code=emoji_code, - reaction_type=reaction_type, - ) - - event = dict( - type="user_status", - user_id=user_profile.id, - ) - - if away is not None: - event["away"] = away - - if status_text is not None: - event["status_text"] = status_text - - if emoji_name is not None: - event["emoji_name"] = emoji_name - event["emoji_code"] = emoji_code - event["reaction_type"] = reaction_type - send_event(realm, event, active_user_ids(realm.id)) diff --git a/zerver/actions/user_status.py b/zerver/actions/user_status.py new file mode 100644 index 0000000000..a59ef40c15 --- /dev/null +++ b/zerver/actions/user_status.py @@ -0,0 +1,51 @@ +from typing import Optional + +from zerver.lib.user_status import update_user_status +from zerver.models import UserProfile, UserStatus, active_user_ids +from zerver.tornado.django_api import send_event + + +def do_update_user_status( + user_profile: UserProfile, + away: Optional[bool], + status_text: Optional[str], + client_id: int, + emoji_name: Optional[str], + emoji_code: Optional[str], + reaction_type: Optional[str], +) -> None: + if away is None: + status = None + elif away: + status = UserStatus.AWAY + else: + status = UserStatus.NORMAL + + realm = user_profile.realm + + update_user_status( + user_profile_id=user_profile.id, + status=status, + status_text=status_text, + client_id=client_id, + emoji_name=emoji_name, + emoji_code=emoji_code, + reaction_type=reaction_type, + ) + + event = dict( + type="user_status", + user_id=user_profile.id, + ) + + if away is not None: + event["away"] = away + + if status_text is not None: + event["status_text"] = status_text + + if emoji_name is not None: + event["emoji_name"] = emoji_name + event["emoji_code"] = emoji_code + event["reaction_type"] = reaction_type + send_event(realm, event, active_user_ids(realm.id)) diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index 8fa52b2d21..47608e6eb2 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -49,7 +49,7 @@ from zerver.actions.message_delete import do_delete_messages from zerver.actions.message_edit import do_update_embedded_data, do_update_message from zerver.actions.message_flags import do_update_message_flags from zerver.actions.muted_users import do_mute_user, do_unmute_user -from zerver.actions.presence import do_update_user_presence, do_update_user_status +from zerver.actions.presence import do_update_user_presence from zerver.actions.reactions import do_add_reaction, do_remove_reaction from zerver.actions.realm_domains import ( do_add_realm_domain, @@ -107,6 +107,7 @@ from zerver.actions.user_settings import ( do_change_user_setting, do_regenerate_api_key, ) +from zerver.actions.user_status import do_update_user_status from zerver.actions.user_topics import do_mute_topic, do_unmute_topic from zerver.actions.users import ( do_change_user_role, diff --git a/zerver/tests/test_import_export.py b/zerver/tests/test_import_export.py index cf0ae14442..e18d498441 100644 --- a/zerver/tests/test_import_export.py +++ b/zerver/tests/test_import_export.py @@ -19,7 +19,7 @@ from zerver.actions.custom_profile_fields import ( try_add_realm_custom_profile_field, ) from zerver.actions.muted_users import do_mute_user -from zerver.actions.presence import do_update_user_presence, do_update_user_status +from zerver.actions.presence import do_update_user_presence from zerver.actions.reactions import check_add_reaction, do_add_reaction from zerver.actions.realm_emoji import check_add_realm_emoji from zerver.actions.realm_icon import do_change_icon_source @@ -29,6 +29,7 @@ from zerver.actions.realm_settings import ( do_set_realm_authentication_methods, ) from zerver.actions.user_activity import do_update_user_activity, do_update_user_activity_interval +from zerver.actions.user_status import do_update_user_status from zerver.actions.user_topics import do_mute_topic from zerver.actions.users import do_deactivate_user from zerver.lib import upload diff --git a/zerver/views/presence.py b/zerver/views/presence.py index e552a9e0f7..630f9ba930 100644 --- a/zerver/views/presence.py +++ b/zerver/views/presence.py @@ -6,7 +6,8 @@ from django.http import HttpRequest, HttpResponse from django.utils.timezone import now as timezone_now from django.utils.translation import gettext as _ -from zerver.actions.presence import do_update_user_status, update_user_presence +from zerver.actions.presence import update_user_presence +from zerver.actions.user_status import do_update_user_status from zerver.decorator import human_users_only from zerver.lib.emoji import check_emoji_request, emoji_name_to_emoji_code from zerver.lib.exceptions import JsonableError