remote-activity: Show remote realm mobile user and push data.

Updates the main query and logic for building the remote activity
table to use remote server mobile user/push data for server rows
and remote realm mobile user/push data for realm rows.
This commit is contained in:
Lauryn Menard 2024-10-24 21:06:24 +02:00 committed by Tim Abbott
parent bd83dbfb42
commit 44a25e00b7
1 changed files with 43 additions and 14 deletions

View File

@ -29,20 +29,20 @@ def get_remote_server_activity(request: HttpRequest) -> HttpResponse:
query = SQL( query = SQL(
""" """
with mobile_push_forwarded_count as ( with remote_server_push_forwarded_count as (
select select
server_id, server_id,
sum(coalesce(value, 0)) as push_forwarded_count sum(coalesce(value, 0)) as server_push_forwarded_count
from zilencer_remoteinstallationcount from zilencer_remoteinstallationcount
where where
property = 'mobile_pushes_forwarded::day' property = 'mobile_pushes_forwarded::day'
and end_time >= current_timestamp(0) - interval '7 days' and end_time >= current_timestamp(0) - interval '7 days'
group by server_id group by server_id
), ),
remote_push_devices as ( remote_server_push_devices as (
select select
server_id, server_id,
count(distinct(user_id, user_uuid)) as push_user_count count(distinct(user_id, user_uuid)) as server_push_user_count
from zilencer_remotepushdevicetoken from zilencer_remotepushdevicetoken
group by server_id group by server_id
), ),
@ -68,6 +68,23 @@ def get_remote_server_activity(request: HttpRequest) -> HttpResponse:
is_system_bot_realm = False is_system_bot_realm = False
and realm_deactivated = False and realm_deactivated = False
group by server_id, id, name, org_type group by server_id, id, name, org_type
),
remote_realm_push_devices as (
select
remote_realm_id,
count(distinct(user_id, user_uuid)) as realm_push_user_count
from zilencer_remotepushdevicetoken
group by remote_realm_id
),
remote_realm_push_forwarded_count as (
select
remote_realm_id,
sum(coalesce(value, 0)) as realm_push_forwarded_count
from zilencer_remoterealmcount
where
property = 'mobile_pushes_forwarded::day'
and end_time >= current_timestamp(0) - interval '7 days'
group by remote_realm_id
) )
select select
rserver.id, rserver.id,
@ -80,16 +97,20 @@ def get_remote_server_activity(request: HttpRequest) -> HttpResponse:
rserver.contact_email, rserver.contact_email,
rserver.last_version, rserver.last_version,
rserver.last_audit_log_update, rserver.last_audit_log_update,
push_user_count, server_push_user_count,
push_forwarded_count, realm_push_user_count,
server_push_forwarded_count,
realm_push_forwarded_count,
realm_type realm_type
from zilencer_remotezulipserver rserver from zilencer_remotezulipserver rserver
left join mobile_push_forwarded_count on mobile_push_forwarded_count.server_id = rserver.id left join remote_server_push_forwarded_count on remote_server_push_forwarded_count.server_id = rserver.id
left join remote_push_devices on remote_push_devices.server_id = rserver.id left join remote_server_push_devices on remote_server_push_devices.server_id = rserver.id
left join remote_realms on remote_realms.server_id = rserver.id left join remote_realms on remote_realms.server_id = rserver.id
left join remote_server_audit_log on remote_server_audit_log.server_id = rserver.id left join remote_server_audit_log on remote_server_audit_log.server_id = rserver.id
left join remote_realm_push_devices on remote_realm_push_devices.remote_realm_id = realm_id
left join remote_realm_push_forwarded_count on remote_realm_push_forwarded_count.remote_realm_id = realm_id
where not deactivated where not deactivated
order by push_user_count DESC NULLS LAST order by server_push_user_count DESC NULLS LAST
""" """
) )
@ -102,8 +123,8 @@ def get_remote_server_activity(request: HttpRequest) -> HttpResponse:
"Server contact email", "Server contact email",
"Server Zulip version", "Server Zulip version",
"Server last audit log update (UTC)", "Server last audit log update (UTC)",
"Server mobile users", "Mobile users",
"Server mobile pushes", "Mobile pushes",
"Realm organization type", "Realm organization type",
"Plan name", "Plan name",
"Plan status", "Plan status",
@ -120,6 +141,10 @@ def get_remote_server_activity(request: HttpRequest) -> HttpResponse:
REALM_CREATED = 2 REALM_CREATED = 2
SERVER_HOST = 3 SERVER_HOST = 3
REALM_HOST = 4 REALM_HOST = 4
SERVER_PUSH_USER_COUNT = 9
REALM_PUSH_USER_COUNT = 10
SERVER_PUSH_FORWARDED = 11
REALM_PUSH_FORWARDED = 12
# Column constants: # Column constants:
DATE_CREATED = 2 DATE_CREATED = 2
@ -153,12 +178,16 @@ def get_remote_server_activity(request: HttpRequest) -> HttpResponse:
ids_string = f"{server_id}" ids_string = f"{server_id}"
row.insert(SERVER_AND_REALM_IDS, ids_string) row.insert(SERVER_AND_REALM_IDS, ids_string)
# Set date created data # Remove extra mobile user/push data and set created date
# For remote realm row, remove server created value; # For remote realm row, remove server push data and created date;
# for remote server row, remove realm created value # for remote server row, remove realm push data and created date.
if realm_id is not None: if realm_id is not None:
row.pop(SERVER_PUSH_FORWARDED)
row.pop(SERVER_PUSH_USER_COUNT)
row.pop(SERVER_CREATED) row.pop(SERVER_CREATED)
else: else:
row.pop(REALM_PUSH_FORWARDED)
row.pop(REALM_PUSH_USER_COUNT)
row.pop(REALM_CREATED) row.pop(REALM_CREATED)
# Get server_host for support link # Get server_host for support link