mirror of
https://github.com/zulip/zulip.git
synced 2025-10-26 01:24:02 +00:00
This moves the logic for `attach_realm_discount`, which is used in the support view, to be in the BillingSession class. Updates the function name to be `attach_discount_to_customer` so that the context is generalized vs realm specific. Updates RealmBillingSession implementation to account for actions that are initiated by a support admin user. Also moves the helper function `get_discount_for_realm` that is only used in support views to `corporate/lib/support.py`.
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
from decimal import Decimal
|
|
from typing import Optional
|
|
from urllib.parse import urlencode, urljoin, urlunsplit
|
|
|
|
from django.conf import settings
|
|
from django.urls import reverse
|
|
|
|
from corporate.lib.stripe import RealmBillingSession
|
|
from corporate.models import get_customer_by_realm
|
|
from zerver.models import Realm, UserProfile, get_realm
|
|
|
|
|
|
def get_support_url(realm: Realm) -> str:
|
|
support_realm_uri = get_realm(settings.STAFF_SUBDOMAIN).uri
|
|
support_url = urljoin(
|
|
support_realm_uri,
|
|
urlunsplit(("", "", reverse("support"), urlencode({"q": realm.string_id}), "")),
|
|
)
|
|
return support_url
|
|
|
|
|
|
def get_discount_for_realm(realm: Realm) -> Optional[Decimal]:
|
|
customer = get_customer_by_realm(realm)
|
|
if customer is not None:
|
|
return customer.default_discount
|
|
return None
|
|
|
|
|
|
def attach_discount_to_realm(realm: Realm, discount: Decimal, *, acting_user: UserProfile) -> None:
|
|
billing_session = RealmBillingSession(acting_user, realm)
|
|
billing_session.attach_discount_to_customer(discount)
|