From 7fc9d29c1eb1474756354c531e91fbe156ebd507 Mon Sep 17 00:00:00 2001 From: Lauryn Menard Date: Wed, 7 May 2025 20:07:26 +0200 Subject: [PATCH] support: Show file upload usage compared to realm upload quota. Implemented on Zulip Cloud support view only since this information isn't relevant for self-hosted support actions. Looking up the realm's currently used upload space adds 3 database queries to the support view test as there is no RealmCount data for the upload quota used in the test. And therefore installation_epoch is called for the realm. With RealmCount upload quota used data, only 2 additional database queries would be made for the realm's support view data. --- corporate/lib/support.py | 21 +++++++++++++++++++ corporate/tests/test_support_views.py | 2 +- .../corporate/support/realm_details.html | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/corporate/lib/support.py b/corporate/lib/support.py index 5404c58567..cf4a990a6e 100644 --- a/corporate/lib/support.py +++ b/corporate/lib/support.py @@ -126,12 +126,32 @@ class CloudSupportData: plan_data: PlanData sponsorship_data: SponsorshipData user_data: UserData + file_upload_usage: str def get_stripe_customer_url(stripe_id: str) -> str: return f"https://dashboard.stripe.com/customers/{stripe_id}" # nocoverage +def get_formatted_realm_upload_space_used(realm: Realm) -> str: # nocoverage + realm_bytes_used = realm.currently_used_upload_space_bytes() + files_uploaded = realm_bytes_used > 0 + + realm_uploads = "No uploads" + if files_uploaded: + realm_uploads = str(round(realm_bytes_used / 1024 / 1024, 2)) + + quota = realm.upload_quota_bytes() + if quota is None: + if files_uploaded: + return f"{realm_uploads} MB / No quota" + return f"{realm_uploads} / No quota" + if quota == 0: + return f"{realm_uploads} / 0.0 MB" + quota_mb = round(quota / 1024 / 1024, 2) + return f"{realm_uploads} / {quota_mb} MB" + + def get_realm_user_data(realm: Realm) -> UserData: non_guests = get_non_guest_user_count(realm) guests = get_guest_user_count(realm) @@ -477,4 +497,5 @@ def get_data_for_cloud_support_view(billing_session: BillingSession) -> CloudSup plan_data=plan_data, sponsorship_data=sponsorship_data, user_data=user_data, + file_upload_usage=get_formatted_realm_upload_space_used(billing_session.realm), ) diff --git a/corporate/tests/test_support_views.py b/corporate/tests/test_support_views.py index 44350dc322..4c1e9e4499 100644 --- a/corporate/tests/test_support_views.py +++ b/corporate/tests/test_support_views.py @@ -751,7 +751,7 @@ class TestSupportEndpoint(ZulipTestCase): def test_realm_support_view_queries(self) -> None: iago = self.example_user("iago") self.login_user(iago) - with self.assert_database_query_count(19): + with self.assert_database_query_count(22): result = self.client_get("/activity/support", {"q": "zulip"}, subdomain="zulip") self.assertEqual(result.status_code, 200) diff --git a/templates/corporate/support/realm_details.html b/templates/corporate/support/realm_details.html index 2443ab28bc..e8f7f427f3 100644 --- a/templates/corporate/support/realm_details.html +++ b/templates/corporate/support/realm_details.html @@ -55,6 +55,8 @@ {% set user_data = realm_support_data[realm.id].user_data %} {% include 'corporate/support/basic_realm_data.html' %} {% endwith %} +
+ File upload usage: {{ realm_support_data[realm.id].file_upload_usage }}