mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	zilencer-models: Create helper function for remote user counts.
Pulls out shared code in get_remote_realm_guest_and_non_guest_count and get_remote_server_guest_and_non_guest_count for generating the RemoteCustomerUserCount so that it can be used in logic for getting these counts for all remote servers and remote realms on an installation.
This commit is contained in:
		
				
					committed by
					
						 Tim Abbott
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							536aef854c
						
					
				
				
					commit
					c08e266956
				
			| @@ -463,6 +463,26 @@ class RemoteCustomerUserCount: | ||||
|     non_guest_user_count: int | ||||
|  | ||||
|  | ||||
| def get_remote_customer_user_count( | ||||
|     audit_logs: List[RemoteRealmAuditLog], | ||||
| ) -> RemoteCustomerUserCount: | ||||
|     guest_count = 0 | ||||
|     non_guest_count = 0 | ||||
|     for log in audit_logs: | ||||
|         humans_count_dict = log.extra_data[RemoteRealmAuditLog.ROLE_COUNT][ | ||||
|             RemoteRealmAuditLog.ROLE_COUNT_HUMANS | ||||
|         ] | ||||
|         for role_type in UserProfile.ROLE_TYPES: | ||||
|             if role_type == UserProfile.ROLE_GUEST: | ||||
|                 guest_count += humans_count_dict.get(str(role_type), 0) | ||||
|             else: | ||||
|                 non_guest_count += humans_count_dict.get(str(role_type), 0) | ||||
|  | ||||
|     return RemoteCustomerUserCount( | ||||
|         non_guest_user_count=non_guest_count, guest_user_count=guest_count | ||||
|     ) | ||||
|  | ||||
|  | ||||
| def get_remote_server_guest_and_non_guest_count( | ||||
|     server_id: int, event_time: datetime = timezone_now() | ||||
| ) -> RemoteCustomerUserCount: | ||||
| @@ -486,26 +506,11 @@ def get_remote_server_guest_and_non_guest_count( | ||||
|         .values_list("max_id", flat=True) | ||||
|     ) | ||||
|  | ||||
|     extra_data_list = RemoteRealmAuditLog.objects.filter( | ||||
|         id__in=list(realm_last_audit_log_ids) | ||||
|     ).values_list("extra_data", flat=True) | ||||
|     realm_audit_logs = RemoteRealmAuditLog.objects.filter(id__in=list(realm_last_audit_log_ids)) | ||||
|  | ||||
|     # Now we add up the user counts from the different realms. | ||||
|     guest_count = 0 | ||||
|     non_guest_count = 0 | ||||
|     for extra_data in extra_data_list: | ||||
|         humans_count_dict = extra_data[RemoteRealmAuditLog.ROLE_COUNT][ | ||||
|             RemoteRealmAuditLog.ROLE_COUNT_HUMANS | ||||
|         ] | ||||
|         for role_type in UserProfile.ROLE_TYPES: | ||||
|             if role_type == UserProfile.ROLE_GUEST: | ||||
|                 guest_count += humans_count_dict.get(str(role_type), 0) | ||||
|             else: | ||||
|                 non_guest_count += humans_count_dict.get(str(role_type), 0) | ||||
|  | ||||
|     return RemoteCustomerUserCount( | ||||
|         non_guest_user_count=non_guest_count, guest_user_count=guest_count | ||||
|     ) | ||||
|     user_count = get_remote_customer_user_count(list(realm_audit_logs)) | ||||
|     return user_count | ||||
|  | ||||
|  | ||||
| def get_remote_realm_guest_and_non_guest_count( | ||||
| @@ -526,21 +531,12 @@ def get_remote_realm_guest_and_non_guest_count( | ||||
|         .exclude(extra_data={}).last() | ||||
|     ) | ||||
|  | ||||
|     guest_count = 0 | ||||
|     non_guest_count = 0 | ||||
|     if latest_audit_log is not None: | ||||
|         humans_count_dict = latest_audit_log.extra_data[RemoteRealmAuditLog.ROLE_COUNT][ | ||||
|             RemoteRealmAuditLog.ROLE_COUNT_HUMANS | ||||
|         ] | ||||
|         for role_type in UserProfile.ROLE_TYPES: | ||||
|             if role_type == UserProfile.ROLE_GUEST: | ||||
|                 guest_count += humans_count_dict.get(str(role_type), 0) | ||||
|         assert latest_audit_log is not None | ||||
|         user_count = get_remote_customer_user_count([latest_audit_log]) | ||||
|     else: | ||||
|                 non_guest_count += humans_count_dict.get(str(role_type), 0) | ||||
|  | ||||
|     return RemoteCustomerUserCount( | ||||
|         non_guest_user_count=non_guest_count, guest_user_count=guest_count | ||||
|     ) | ||||
|         user_count = RemoteCustomerUserCount(guest_user_count=0, non_guest_user_count=0) | ||||
|     return user_count | ||||
|  | ||||
|  | ||||
| def has_stale_audit_log(server: RemoteZulipServer) -> bool: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user