mirror of https://github.com/zulip/zulip.git
analytics: Add summary statistic for guest users in realm.
Adds the count of users with the role of guest to the stats view `page_params` via a database query. This information is then added to the summary statistics section of the analytics page after being formatted by `stats.js`. Creates Bassanio as a guest user in the database for the analytics realm. Fixes #20162.
This commit is contained in:
parent
f37ac80384
commit
a3f6220fe4
|
@ -92,6 +92,16 @@ class Command(BaseCommand):
|
|||
)
|
||||
do_change_user_role(shylock, UserProfile.ROLE_REALM_OWNER, acting_user=None)
|
||||
|
||||
# Create guest user for set_guest_users_statistic.
|
||||
create_user(
|
||||
"bassanio@analytics.ds",
|
||||
"Bassanio",
|
||||
realm,
|
||||
full_name="Bassanio",
|
||||
role=UserProfile.ROLE_GUEST,
|
||||
force_date_joined=installation_time,
|
||||
)
|
||||
|
||||
administrators_user_group = UserGroup.objects.get(
|
||||
name=UserGroup.ADMINISTRATORS_GROUP_NAME, realm=realm, is_system_group=True
|
||||
)
|
||||
|
|
|
@ -55,11 +55,18 @@ def render_stats(
|
|||
analytics_ready: bool = True,
|
||||
) -> HttpResponse:
|
||||
assert request.user.is_authenticated
|
||||
|
||||
# Same query to get guest user count as in get_seat_count in corporate/lib/stripe.py.
|
||||
guest_users = UserProfile.objects.filter(
|
||||
realm=request.user.realm, is_active=True, is_bot=False, role=UserProfile.ROLE_GUEST
|
||||
).count()
|
||||
|
||||
page_params = dict(
|
||||
data_url_suffix=data_url_suffix,
|
||||
for_installation=for_installation,
|
||||
remote=remote,
|
||||
upload_space_used=request.user.realm.currently_used_upload_space_bytes(),
|
||||
guest_users=guest_users,
|
||||
)
|
||||
|
||||
request_language = get_and_set_request_language(
|
||||
|
|
|
@ -69,6 +69,8 @@ def get_seat_count(
|
|||
.exclude(role=UserProfile.ROLE_GUEST)
|
||||
.count()
|
||||
) + extra_non_guests_count
|
||||
|
||||
# This guest count calculation should match the similar query in render_stats().
|
||||
guests = (
|
||||
UserProfile.objects.filter(
|
||||
realm=realm, is_active=True, is_bot=False, role=UserProfile.ROLE_GUEST
|
||||
|
|
|
@ -194,6 +194,13 @@ function set_storage_space_used_statistic(upload_space_used) {
|
|||
$("#id_storage_space_used").closest("summary-stats").show();
|
||||
}
|
||||
|
||||
function set_guest_users_statistic(guest_users) {
|
||||
const guest_users_string = guest_users.toLocaleString();
|
||||
|
||||
$("#id_guest_users_count").text(guest_users_string);
|
||||
$("#id_guest_users_count").closest("summary-stats").show();
|
||||
}
|
||||
|
||||
// PLOTLY CHARTS
|
||||
function populate_messages_sent_over_time(data) {
|
||||
if (data.end_times.length === 0) {
|
||||
|
@ -1116,3 +1123,4 @@ get_chart_data(
|
|||
);
|
||||
|
||||
set_storage_space_used_statistic(page_params.upload_space_used);
|
||||
set_guest_users_statistic(page_params.guest_users);
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
<ul>
|
||||
<li>{{ _("Number of users") }}: <span id="id_total_users"></span></li>
|
||||
<li>{{ _("Users active during the last 15 days") }}: <span id="id_active_fifteen_day_users"></span></li>
|
||||
<li>{{ _("Number of guests") }}: <span id="id_guest_users_count"></span></li>
|
||||
<li>{{ _("Total number of messages") }}: <span id="id_total_messages_sent"></span></li>
|
||||
<li>{{ _("Number of messages in the last 30 days") }}: <span id="id_thirty_days_messages_sent"></span></li>
|
||||
<li>{{ _("File storage in use") }}: <span id="id_storage_space_used"></span></li>
|
||||
|
|
Loading…
Reference in New Issue