mirror of
https://github.com/zulip/zulip.git
synced 2025-11-01 20:44:04 +00:00
support: Get plan data via BillingSession for support views.
This commit is contained in:
committed by
Tim Abbott
parent
8d992405a6
commit
6d66248d3d
@@ -1,14 +1,25 @@
|
||||
from dataclasses import dataclass
|
||||
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 django.utils.timezone import now as timezone_now
|
||||
|
||||
from corporate.models import Customer
|
||||
from corporate.lib.stripe import BillingSession
|
||||
from corporate.models import Customer, CustomerPlan, get_current_plan_by_customer
|
||||
from zerver.models import Realm, get_realm
|
||||
|
||||
|
||||
@dataclass
|
||||
class PlanData:
|
||||
customer: Optional["Customer"] = None
|
||||
current_plan: Optional["CustomerPlan"] = None
|
||||
licenses: Optional[int] = None
|
||||
licenses_used: Optional[int] = None
|
||||
|
||||
|
||||
def get_support_url(realm: Realm) -> str:
|
||||
support_realm_uri = get_realm(settings.STAFF_SUBDOMAIN).uri
|
||||
support_url = urljoin(
|
||||
@@ -24,3 +35,25 @@ def get_customer_discount_for_support_view(
|
||||
if customer is None:
|
||||
return None
|
||||
return customer.default_discount
|
||||
|
||||
|
||||
def get_current_plan_data_for_support_view(billing_session: BillingSession) -> PlanData:
|
||||
customer = billing_session.get_customer()
|
||||
plan = None
|
||||
if customer is not None:
|
||||
plan = get_current_plan_by_customer(customer)
|
||||
plan_data = PlanData(
|
||||
customer=customer,
|
||||
current_plan=plan,
|
||||
)
|
||||
if plan is not None:
|
||||
new_plan, last_ledger_entry = billing_session.make_end_of_cycle_updates_if_needed(
|
||||
plan, timezone_now()
|
||||
)
|
||||
if last_ledger_entry is not None:
|
||||
if new_plan is not None:
|
||||
plan_data.current_plan = new_plan # nocoverage
|
||||
plan_data.licenses = last_ledger_entry.licenses
|
||||
plan_data.licenses_used = billing_session.current_count_for_billed_licenses()
|
||||
|
||||
return plan_data
|
||||
|
||||
Reference in New Issue
Block a user