mirror of
https://github.com/zulip/zulip.git
synced 2025-10-25 09:03:57 +00:00
Makes `approve_sponshorship` an abstract method in BillingSession abstract base class and moves the implementation for realms to the RealmBillingSession child class. Adds `approve_realm_sponsorship` helper function that's used in the support view and initiates the billing session.
37 lines
1.2 KiB
Python
37 lines
1.2 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)
|
|
|
|
|
|
def approve_realm_sponsorship(realm: Realm, *, acting_user: UserProfile) -> None:
|
|
billing_session = RealmBillingSession(acting_user, realm)
|
|
billing_session.approve_sponsorship()
|