mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	presence: Extract lib/presence.py.
This will make more sense when we pull some code out of the model.
This commit is contained in:
		@@ -4989,15 +4989,6 @@ def filter_presence_idle_user_ids(user_ids: Set[int]) -> List[int]:
 | 
				
			|||||||
    idle_user_ids = user_ids - active_user_ids
 | 
					    idle_user_ids = user_ids - active_user_ids
 | 
				
			||||||
    return sorted(list(idle_user_ids))
 | 
					    return sorted(list(idle_user_ids))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_status_dict(requesting_user_profile: UserProfile,
 | 
					 | 
				
			||||||
                    slim_presence: bool) -> Dict[str, Dict[str, Dict[str, Any]]]:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if requesting_user_profile.realm.presence_disabled:
 | 
					 | 
				
			||||||
        # Return an empty dict if presence is disabled in this realm
 | 
					 | 
				
			||||||
        return defaultdict(dict)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return UserPresence.get_status_dict_by_realm(requesting_user_profile.realm_id, slim_presence)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def do_send_confirmation_email(invitee: PreregistrationUser,
 | 
					def do_send_confirmation_email(invitee: PreregistrationUser,
 | 
				
			||||||
                               referrer: UserProfile) -> str:
 | 
					                               referrer: UserProfile) -> str:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,6 +27,7 @@ from zerver.lib.message import (
 | 
				
			|||||||
    remove_message_id_from_unread_mgs,
 | 
					    remove_message_id_from_unread_mgs,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from zerver.lib.narrow import check_supported_events_narrow_filter, read_stop_words
 | 
					from zerver.lib.narrow import check_supported_events_narrow_filter, read_stop_words
 | 
				
			||||||
 | 
					from zerver.lib.presence import get_status_dict
 | 
				
			||||||
from zerver.lib.push_notifications import push_notifications_enabled
 | 
					from zerver.lib.push_notifications import push_notifications_enabled
 | 
				
			||||||
from zerver.lib.soft_deactivation import reactivate_user_if_soft_deactivated
 | 
					from zerver.lib.soft_deactivation import reactivate_user_if_soft_deactivated
 | 
				
			||||||
from zerver.lib.realm_icon import realm_icon_url
 | 
					from zerver.lib.realm_icon import realm_icon_url
 | 
				
			||||||
@@ -39,7 +40,7 @@ from zerver.lib.actions import (
 | 
				
			|||||||
    do_get_streams,
 | 
					    do_get_streams,
 | 
				
			||||||
    get_default_streams_for_realm,
 | 
					    get_default_streams_for_realm,
 | 
				
			||||||
    gather_subscriptions_helper,
 | 
					    gather_subscriptions_helper,
 | 
				
			||||||
    get_status_dict, streams_to_dicts_sorted,
 | 
					    streams_to_dicts_sorted,
 | 
				
			||||||
    default_stream_groups_to_dicts_sorted,
 | 
					    default_stream_groups_to_dicts_sorted,
 | 
				
			||||||
    get_owned_bot_dicts,
 | 
					    get_owned_bot_dicts,
 | 
				
			||||||
    get_available_notification_sounds,
 | 
					    get_available_notification_sounds,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								zerver/lib/presence.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								zerver/lib/presence.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					from collections import defaultdict
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					from typing import Any, Dict
 | 
				
			||||||
 | 
					from zerver.models import UserProfile, UserPresence
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_status_dict(requesting_user_profile: UserProfile,
 | 
				
			||||||
 | 
					                    slim_presence: bool) -> Dict[str, Dict[str, Dict[str, Any]]]:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if requesting_user_profile.realm.presence_disabled:
 | 
				
			||||||
 | 
					        # Return an empty dict if presence is disabled in this realm
 | 
				
			||||||
 | 
					        return defaultdict(dict)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return UserPresence.get_status_dict_by_realm(requesting_user_profile.realm_id, slim_presence)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_presence_response(requesting_user_profile: UserProfile,
 | 
				
			||||||
 | 
					                          slim_presence: bool) -> Dict[str, Any]:
 | 
				
			||||||
 | 
					    server_timestamp = time.time()
 | 
				
			||||||
 | 
					    presences = get_status_dict(requesting_user_profile, slim_presence)
 | 
				
			||||||
 | 
					    return dict(presences=presences, server_timestamp=server_timestamp)
 | 
				
			||||||
@@ -1,5 +1,4 @@
 | 
				
			|||||||
import datetime
 | 
					import datetime
 | 
				
			||||||
import time
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
from typing import Any, Dict, Optional
 | 
					from typing import Any, Dict, Optional
 | 
				
			||||||
@@ -11,9 +10,9 @@ from django.utils.translation import ugettext as _
 | 
				
			|||||||
from zerver.decorator import human_users_only
 | 
					from zerver.decorator import human_users_only
 | 
				
			||||||
from zerver.lib.actions import (
 | 
					from zerver.lib.actions import (
 | 
				
			||||||
    do_update_user_status,
 | 
					    do_update_user_status,
 | 
				
			||||||
    get_status_dict,
 | 
					 | 
				
			||||||
    update_user_presence,
 | 
					    update_user_presence,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					from zerver.lib.presence import get_presence_response
 | 
				
			||||||
from zerver.lib.request import has_request_variables, REQ, JsonableError
 | 
					from zerver.lib.request import has_request_variables, REQ, JsonableError
 | 
				
			||||||
from zerver.lib.response import json_success, json_error
 | 
					from zerver.lib.response import json_success, json_error
 | 
				
			||||||
from zerver.lib.timestamp import datetime_to_timestamp
 | 
					from zerver.lib.timestamp import datetime_to_timestamp
 | 
				
			||||||
@@ -21,12 +20,6 @@ from zerver.lib.validator import check_bool, check_capped_string
 | 
				
			|||||||
from zerver.models import UserActivity, UserPresence, UserProfile, \
 | 
					from zerver.models import UserActivity, UserPresence, UserProfile, \
 | 
				
			||||||
    get_active_user_by_delivery_email
 | 
					    get_active_user_by_delivery_email
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_presence_response(requesting_user_profile: UserProfile,
 | 
					 | 
				
			||||||
                          slim_presence: bool) -> Dict[str, Any]:
 | 
					 | 
				
			||||||
    server_timestamp = time.time()
 | 
					 | 
				
			||||||
    presences = get_status_dict(requesting_user_profile, slim_presence)
 | 
					 | 
				
			||||||
    return dict(presences=presences, server_timestamp=server_timestamp)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def get_presence_backend(request: HttpRequest, user_profile: UserProfile,
 | 
					def get_presence_backend(request: HttpRequest, user_profile: UserProfile,
 | 
				
			||||||
                         email: str) -> HttpResponse:
 | 
					                         email: str) -> HttpResponse:
 | 
				
			||||||
    # This isn't used by the webapp; it's available for API use by
 | 
					    # This isn't used by the webapp; it's available for API use by
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user