mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
upgrade: Make card add / update work for remote servers.
This commit is contained in:
@@ -2594,12 +2594,12 @@ class RemoteServerBillingSession(BillingSession): # nocoverage
|
||||
@override
|
||||
@property
|
||||
def billing_session_url(self) -> str:
|
||||
return "TBD"
|
||||
return f"{settings.EXTERNAL_URI_SCHEME}{settings.SELF_HOSTING_MANAGEMENT_SUBDOMAIN}.{settings.EXTERNAL_HOST}/server/{self.remote_server.uuid}"
|
||||
|
||||
@override
|
||||
@property
|
||||
def billing_base_url(self) -> str:
|
||||
return f"/server/${self.remote_server.uuid}"
|
||||
return f"/server/{self.remote_server.uuid}"
|
||||
|
||||
@override
|
||||
def support_url(self) -> str:
|
||||
|
@@ -10,6 +10,7 @@ from corporate.views.event_status import (
|
||||
event_status_page,
|
||||
remote_realm_event_status,
|
||||
remote_realm_event_status_page,
|
||||
remote_server_event_status,
|
||||
remote_server_event_status_page,
|
||||
)
|
||||
from corporate.views.portico import (
|
||||
@@ -33,6 +34,7 @@ from corporate.views.session import (
|
||||
start_card_update_stripe_session,
|
||||
start_card_update_stripe_session_for_realm_upgrade,
|
||||
start_card_update_stripe_session_for_remote_realm_upgrade,
|
||||
start_card_update_stripe_session_for_remote_server_upgrade,
|
||||
)
|
||||
from corporate.views.sponsorship import (
|
||||
remote_realm_sponsorship,
|
||||
@@ -43,7 +45,12 @@ from corporate.views.sponsorship import (
|
||||
sponsorship_page,
|
||||
)
|
||||
from corporate.views.support import support_request
|
||||
from corporate.views.upgrade import remote_realm_upgrade_page, upgrade, upgrade_page
|
||||
from corporate.views.upgrade import (
|
||||
remote_realm_upgrade_page,
|
||||
remote_server_upgrade_page,
|
||||
upgrade,
|
||||
upgrade_page,
|
||||
)
|
||||
from corporate.views.webhook import stripe_webhook
|
||||
from zerver.lib.rest import rest_path
|
||||
from zerver.lib.url_redirects import LANDING_PAGE_REDIRECTS
|
||||
@@ -180,6 +187,11 @@ urlpatterns += [
|
||||
path("realm/<realm_uuid>/billing", remote_billing_page_realm, name="remote_billing_page_realm"),
|
||||
path("server/<server_uuid>/", remote_billing_page_server, name="remote_billing_page_server"),
|
||||
path("realm/<realm_uuid>/upgrade", remote_realm_upgrade_page, name="remote_realm_upgrade_page"),
|
||||
path(
|
||||
"server/<server_uuid>/upgrade",
|
||||
remote_server_upgrade_page,
|
||||
name="remote_server_upgrade_page",
|
||||
),
|
||||
path(
|
||||
"realm/<realm_uuid>/sponsorship",
|
||||
remote_realm_sponsorship_page,
|
||||
@@ -212,7 +224,12 @@ urlpatterns += [
|
||||
"json/realm/<realm_uuid>/upgrade/session/start_card_update_session",
|
||||
start_card_update_stripe_session_for_remote_realm_upgrade,
|
||||
),
|
||||
path(
|
||||
"json/server/<server_uuid>/upgrade/session/start_card_update_session",
|
||||
start_card_update_stripe_session_for_remote_server_upgrade,
|
||||
),
|
||||
path("json/realm/<realm_uuid>/billing/event/status", remote_realm_event_status),
|
||||
path("json/server/<server_uuid>/billing/event/status", remote_server_event_status),
|
||||
]
|
||||
|
||||
urlpatterns += [
|
||||
|
@@ -6,9 +6,15 @@ from django.shortcuts import render
|
||||
|
||||
from corporate.lib.decorator import (
|
||||
authenticated_remote_realm_management_endpoint,
|
||||
authenticated_remote_server_management_endpoint,
|
||||
self_hosting_management_endpoint,
|
||||
)
|
||||
from corporate.lib.stripe import EventStatusRequest, RealmBillingSession, RemoteRealmBillingSession
|
||||
from corporate.lib.stripe import (
|
||||
EventStatusRequest,
|
||||
RealmBillingSession,
|
||||
RemoteRealmBillingSession,
|
||||
RemoteServerBillingSession,
|
||||
)
|
||||
from zerver.decorator import require_organization_member, zulip_login_required
|
||||
from zerver.lib.response import json_success
|
||||
from zerver.lib.typed_endpoint import typed_endpoint
|
||||
@@ -50,6 +56,22 @@ def remote_realm_event_status(
|
||||
return json_success(request, data)
|
||||
|
||||
|
||||
@authenticated_remote_server_management_endpoint
|
||||
@typed_endpoint
|
||||
def remote_server_event_status(
|
||||
request: HttpRequest,
|
||||
billing_session: RemoteServerBillingSession,
|
||||
*,
|
||||
stripe_session_id: Optional[str] = None,
|
||||
stripe_payment_intent_id: Optional[str] = None,
|
||||
) -> HttpResponse: # nocoverage
|
||||
event_status_request = EventStatusRequest(
|
||||
stripe_session_id=stripe_session_id, stripe_payment_intent_id=stripe_payment_intent_id
|
||||
)
|
||||
data = billing_session.get_event_status(event_status_request)
|
||||
return json_success(request, data)
|
||||
|
||||
|
||||
@zulip_login_required
|
||||
@typed_endpoint
|
||||
def event_status_page(
|
||||
|
@@ -3,8 +3,15 @@ import logging
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from pydantic import Json
|
||||
|
||||
from corporate.lib.decorator import authenticated_remote_realm_management_endpoint
|
||||
from corporate.lib.stripe import RealmBillingSession, RemoteRealmBillingSession
|
||||
from corporate.lib.decorator import (
|
||||
authenticated_remote_realm_management_endpoint,
|
||||
authenticated_remote_server_management_endpoint,
|
||||
)
|
||||
from corporate.lib.stripe import (
|
||||
RealmBillingSession,
|
||||
RemoteRealmBillingSession,
|
||||
RemoteServerBillingSession,
|
||||
)
|
||||
from corporate.models import Session
|
||||
from zerver.decorator import require_billing_access, require_organization_member
|
||||
from zerver.lib.response import json_success
|
||||
@@ -67,3 +74,20 @@ def start_card_update_stripe_session_for_remote_realm_upgrade(
|
||||
request,
|
||||
data=session_data,
|
||||
)
|
||||
|
||||
|
||||
@authenticated_remote_server_management_endpoint
|
||||
@typed_endpoint
|
||||
def start_card_update_stripe_session_for_remote_server_upgrade(
|
||||
request: HttpRequest,
|
||||
billing_session: RemoteServerBillingSession,
|
||||
*,
|
||||
manual_license_management: Json[bool] = False,
|
||||
) -> HttpResponse: # nocoverage
|
||||
session_data = billing_session.get_card_update_session_data_for_upgrade(
|
||||
manual_license_management
|
||||
)
|
||||
return json_success(
|
||||
request,
|
||||
data=session_data,
|
||||
)
|
||||
|
@@ -6,7 +6,10 @@ from django.http import HttpRequest, HttpResponse, HttpResponseRedirect
|
||||
from django.shortcuts import render
|
||||
from pydantic import Json
|
||||
|
||||
from corporate.lib.decorator import authenticated_remote_realm_management_endpoint
|
||||
from corporate.lib.decorator import (
|
||||
authenticated_remote_realm_management_endpoint,
|
||||
authenticated_remote_server_management_endpoint,
|
||||
)
|
||||
from corporate.lib.stripe import (
|
||||
VALID_BILLING_MODALITY_VALUES,
|
||||
VALID_BILLING_SCHEDULE_VALUES,
|
||||
@@ -15,6 +18,7 @@ from corporate.lib.stripe import (
|
||||
InitialUpgradeRequest,
|
||||
RealmBillingSession,
|
||||
RemoteRealmBillingSession,
|
||||
RemoteServerBillingSession,
|
||||
UpgradeRequest,
|
||||
)
|
||||
from corporate.models import CustomerPlan
|
||||
@@ -120,3 +124,24 @@ def remote_realm_upgrade_page(
|
||||
|
||||
response = render(request, "corporate/upgrade.html", context=context)
|
||||
return response
|
||||
|
||||
|
||||
@authenticated_remote_server_management_endpoint
|
||||
@typed_endpoint
|
||||
def remote_server_upgrade_page(
|
||||
request: HttpRequest,
|
||||
billing_session: RemoteServerBillingSession,
|
||||
*,
|
||||
manual_license_management: Json[bool] = False,
|
||||
) -> HttpResponse: # nocoverage
|
||||
initial_upgrade_request = InitialUpgradeRequest(
|
||||
manual_license_management=manual_license_management,
|
||||
tier=CustomerPlan.TIER_CLOUD_STANDARD,
|
||||
)
|
||||
redirect_url, context = billing_session.get_initial_upgrade_context(initial_upgrade_request)
|
||||
|
||||
if redirect_url:
|
||||
return HttpResponseRedirect(redirect_url)
|
||||
|
||||
response = render(request, "corporate/upgrade.html", context=context)
|
||||
return response
|
||||
|
Reference in New Issue
Block a user