sponsorship: Ask user how they plan to use Zulip.

This will help avoid some back-and-forth on sponsorship requests.
This commit is contained in:
Aman Agrawal
2025-01-14 22:49:41 +05:30
committed by Tim Abbott
parent dd56e04dc6
commit b549562a4d
10 changed files with 53 additions and 0 deletions

View File

@@ -696,6 +696,7 @@ class SponsorshipRequestForm(forms.Form):
organization_type = forms.IntegerField()
description = forms.CharField(widget=forms.Textarea)
expected_total_users = forms.CharField(widget=forms.Textarea)
plan_to_use_zulip = forms.CharField(widget=forms.Textarea)
paid_users_count = forms.CharField(widget=forms.Textarea)
paid_users_description = forms.CharField(widget=forms.Textarea, required=False)
requested_plan = forms.ChoiceField(
@@ -3498,6 +3499,7 @@ class BillingSession(ABC):
org_description=form.cleaned_data["description"],
org_type=form.cleaned_data["organization_type"],
expected_total_users=form.cleaned_data["expected_total_users"],
plan_to_use_zulip=form.cleaned_data["plan_to_use_zulip"],
paid_users_count=form.cleaned_data["paid_users_count"],
paid_users_description=form.cleaned_data["paid_users_description"],
requested_plan=form.cleaned_data["requested_plan"],
@@ -3526,6 +3528,7 @@ class BillingSession(ABC):
"website": sponsorship_request.org_website,
"description": sponsorship_request.org_description,
"expected_total_users": sponsorship_request.expected_total_users,
"plan_to_use_zulip": sponsorship_request.plan_to_use_zulip,
"paid_users_count": sponsorship_request.paid_users_count,
"paid_users_description": sponsorship_request.paid_users_description,
"requested_plan": sponsorship_request.requested_plan,

View File

@@ -50,6 +50,7 @@ class SponsorshipRequestDict(TypedDict):
org_type: str
org_website: str
org_description: str
plan_to_use_zulip: str
total_users: str
paid_users: str
paid_users_description: str
@@ -185,6 +186,7 @@ def get_customer_sponsorship_data(customer: Customer) -> SponsorshipData:
org_website=website,
org_description=last_sponsorship_request.org_description,
total_users=last_sponsorship_request.expected_total_users,
plan_to_use_zulip=last_sponsorship_request.plan_to_use_zulip,
paid_users=last_sponsorship_request.paid_users_count,
paid_users_description=last_sponsorship_request.paid_users_description,
requested_plan=last_sponsorship_request.requested_plan,

View File

@@ -0,0 +1,17 @@
# Generated by Django 5.0.10 on 2025-01-14 17:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("corporate", "0001_squashed_0044_convert_ids_to_bigints"),
]
operations = [
migrations.AddField(
model_name="zulipsponsorshiprequest",
name="plan_to_use_zulip",
field=models.TextField(default=""),
),
]

View File

@@ -576,6 +576,7 @@ class ZulipSponsorshipRequest(models.Model):
org_description = models.TextField(default="")
expected_total_users = models.TextField(default="")
plan_to_use_zulip = models.TextField(default="")
paid_users_count = models.TextField(default="")
paid_users_description = models.TextField(default="")

View File

@@ -2456,6 +2456,7 @@ class StripeTest(StripeTestCase):
"website": "invalid-url",
"description": "Infinispan is a distributed in-memory key/value data store with optional schema.",
"expected_total_users": "10 users",
"plan_to_use_zulip": "For communication on moon.",
"paid_users_count": "1 user",
"paid_users_description": "We have 1 paid user.",
}
@@ -2472,6 +2473,7 @@ class StripeTest(StripeTestCase):
"website": "",
"description": "Infinispan is a distributed in-memory key/value data store with optional schema.",
"expected_total_users": "10 users",
"plan_to_use_zulip": "For communication on moon.",
"paid_users_count": "1 user",
"paid_users_description": "We have 1 paid user.",
}
@@ -2570,6 +2572,7 @@ class StripeTest(StripeTestCase):
"website": "https://infinispan.org/",
"description": "Infinispan is a distributed in-memory key/value data store with optional schema.",
"expected_total_users": "10 users",
"plan_to_use_zulip": "For communication on moon.",
"paid_users_count": "1 user",
"paid_users_description": "We have 1 paid user.",
}
@@ -8299,6 +8302,7 @@ class TestRemoteRealmBillingFlow(StripeTestCase, RemoteRealmBillingTestCase):
"website": "https://infinispan.org/",
"description": "Infinispan is a distributed in-memory key/value data store with optional schema.",
"expected_total_users": "10 users",
"plan_to_use_zulip": "For communication on moon.",
"paid_users_count": "1 user",
"paid_users_description": "We have 1 paid user.",
"requested_plan": "Community",
@@ -8926,6 +8930,7 @@ class TestRemoteServerBillingFlow(StripeTestCase, RemoteServerTestCase):
"website": "https://infinispan.org/",
"description": "Infinispan is a distributed in-memory key/value data store with optional schema.",
"expected_total_users": "10 users",
"plan_to_use_zulip": "For communication on moon.",
"paid_users_count": "1 user",
"paid_users_description": "We have 1 paid user.",
"requested_plan": "Community",

View File

@@ -65,6 +65,7 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase):
org_website=website,
org_description="We help people.",
expected_total_users="20-35",
plan_to_use_zulip="For communication on moon.",
paid_users_count=paid_users,
paid_users_description="",
requested_plan=plan,