mirror of https://github.com/zulip/zulip.git
support: Consolidate logic for generating support URLs.
The build_support_url is a more generic function that's used in the BillingSession framework and will generate the same URL for these Zulip Cloud support requests.
This commit is contained in:
parent
3ebc507ddb
commit
7416e9c29c
|
@ -1,11 +1,8 @@
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from typing import Optional, TypedDict, Union
|
from typing import Optional, TypedDict, Union
|
||||||
from urllib.parse import urlencode, urljoin, urlunsplit
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db.models import Sum
|
from django.db.models import Sum
|
||||||
from django.urls import reverse
|
|
||||||
from django.utils.timezone import now as timezone_now
|
from django.utils.timezone import now as timezone_now
|
||||||
|
|
||||||
from corporate.lib.stripe import (
|
from corporate.lib.stripe import (
|
||||||
|
@ -30,7 +27,7 @@ from corporate.models import (
|
||||||
)
|
)
|
||||||
from zerver.models import Realm
|
from zerver.models import Realm
|
||||||
from zerver.models.realm_audit_logs import AuditLogEventType
|
from zerver.models.realm_audit_logs import AuditLogEventType
|
||||||
from zerver.models.realms import get_org_type_display_name, get_realm
|
from zerver.models.realms import get_org_type_display_name
|
||||||
from zilencer.lib.remote_counts import MissingDataError
|
from zilencer.lib.remote_counts import MissingDataError
|
||||||
from zilencer.models import (
|
from zilencer.models import (
|
||||||
RemoteCustomerUserCount,
|
RemoteCustomerUserCount,
|
||||||
|
@ -130,15 +127,6 @@ def get_stripe_customer_url(stripe_id: str) -> str:
|
||||||
return f"https://dashboard.stripe.com/customers/{stripe_id}" # nocoverage
|
return f"https://dashboard.stripe.com/customers/{stripe_id}" # nocoverage
|
||||||
|
|
||||||
|
|
||||||
def get_realm_support_url(realm: Realm) -> str:
|
|
||||||
support_realm_url = get_realm(settings.STAFF_SUBDOMAIN).url
|
|
||||||
support_url = urljoin(
|
|
||||||
support_realm_url,
|
|
||||||
urlunsplit(("", "", reverse("support"), urlencode({"q": realm.string_id}), "")),
|
|
||||||
)
|
|
||||||
return support_url
|
|
||||||
|
|
||||||
|
|
||||||
def get_realm_user_data(realm: Realm) -> UserData:
|
def get_realm_user_data(realm: Realm) -> UserData:
|
||||||
non_guests = get_non_guest_user_count(realm)
|
non_guests = get_non_guest_user_count(realm)
|
||||||
guests = get_guest_user_count(realm)
|
guests = get_guest_user_count(realm)
|
||||||
|
|
|
@ -98,7 +98,7 @@ class DemoRequestForm(forms.Form):
|
||||||
@zulip_login_required
|
@zulip_login_required
|
||||||
@typed_endpoint_without_parameters
|
@typed_endpoint_without_parameters
|
||||||
def support_request(request: HttpRequest) -> HttpResponse:
|
def support_request(request: HttpRequest) -> HttpResponse:
|
||||||
from corporate.lib.support import get_realm_support_url
|
from corporate.lib.stripe import build_support_url
|
||||||
|
|
||||||
user = request.user
|
user = request.user
|
||||||
assert user.is_authenticated
|
assert user.is_authenticated
|
||||||
|
@ -119,7 +119,7 @@ def support_request(request: HttpRequest) -> HttpResponse:
|
||||||
"realm_string_id": user.realm.string_id,
|
"realm_string_id": user.realm.string_id,
|
||||||
"request_subject": form.cleaned_data["request_subject"],
|
"request_subject": form.cleaned_data["request_subject"],
|
||||||
"request_message": form.cleaned_data["request_message"],
|
"request_message": form.cleaned_data["request_message"],
|
||||||
"support_url": get_realm_support_url(user.realm),
|
"support_url": build_support_url("support", user.realm.string_id),
|
||||||
"user_role": user.get_role_name(),
|
"user_role": user.get_role_name(),
|
||||||
}
|
}
|
||||||
# Sent to the server's support team, so this email is not user-facing.
|
# Sent to the server's support team, so this email is not user-facing.
|
||||||
|
|
Loading…
Reference in New Issue