realm: Rename plan type constants to be more descriptive.

It is confusing to have the plan type constants not be namespaced
by the thing they represent. We already have a namespacing
convention in place for constants, so we should use it for
Realm.plan_type as well.
This commit is contained in:
Eeshan Garg 2021-10-18 17:28:17 -04:00 committed by Tim Abbott
parent cbbd4b128d
commit b325a4f1be
25 changed files with 141 additions and 131 deletions

View File

@ -466,7 +466,7 @@ class TestSupportEndpoint(ZulipTestCase):
) )
self.assert_in_success_response(["Sponsorship approved for lear"], result) self.assert_in_success_response(["Sponsorship approved for lear"], result)
lear_realm.refresh_from_db() lear_realm.refresh_from_db()
self.assertEqual(lear_realm.plan_type, Realm.STANDARD_FREE) self.assertEqual(lear_realm.plan_type, Realm.PLAN_TYPE_STANDARD_FREE)
customer = get_customer_by_realm(lear_realm) customer = get_customer_by_realm(lear_realm)
assert customer is not None assert customer is not None
self.assertFalse(customer.sponsorship_pending) self.assertFalse(customer.sponsorship_pending)

View File

@ -223,11 +223,14 @@ def realm_summary_table(realm_minutes: Dict[str, float]) -> str:
if string_id in estimated_arrs: if string_id in estimated_arrs:
row["arr"] = estimated_arrs[string_id] row["arr"] = estimated_arrs[string_id]
if row["plan_type"] in [Realm.STANDARD, Realm.PLUS]: if row["plan_type"] in [Realm.PLAN_TYPE_STANDARD, Realm.PLAN_TYPE_PLUS]:
row["effective_rate"] = 100 - int(realms_to_default_discount.get(string_id, 0)) row["effective_rate"] = 100 - int(realms_to_default_discount.get(string_id, 0))
elif row["plan_type"] == Realm.STANDARD_FREE: elif row["plan_type"] == Realm.PLAN_TYPE_STANDARD_FREE:
row["effective_rate"] = 0 row["effective_rate"] = 0
elif row["plan_type"] == Realm.LIMITED and string_id in realms_to_default_discount: elif (
row["plan_type"] == Realm.PLAN_TYPE_LIMITED
and string_id in realms_to_default_discount
):
row["effective_rate"] = 100 - int(realms_to_default_discount[string_id]) row["effective_rate"] = 100 - int(realms_to_default_discount[string_id])
else: else:
row["effective_rate"] = "" row["effective_rate"] = ""

View File

@ -59,11 +59,11 @@ if settings.BILLING_ENABLED:
def get_plan_name(plan_type: int) -> str: def get_plan_name(plan_type: int) -> str:
return { return {
Realm.SELF_HOSTED: "self hosted", Realm.PLAN_TYPE_SELF_HOSTED: "self hosted",
Realm.LIMITED: "limited", Realm.PLAN_TYPE_LIMITED: "limited",
Realm.STANDARD: "standard", Realm.PLAN_TYPE_STANDARD: "standard",
Realm.STANDARD_FREE: "open source", Realm.PLAN_TYPE_STANDARD_FREE: "open source",
Realm.PLUS: "plus", Realm.PLAN_TYPE_PLUS: "plus",
}[plan_type] }[plan_type]

View File

@ -728,7 +728,7 @@ def process_initial_upgrade(
from zerver.lib.actions import do_change_plan_type from zerver.lib.actions import do_change_plan_type
do_change_plan_type(realm, Realm.STANDARD, acting_user=user) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD, acting_user=user)
def update_license_ledger_for_manual_plan( def update_license_ledger_for_manual_plan(
@ -948,7 +948,7 @@ def update_sponsorship_status(
def approve_sponsorship(realm: Realm, *, acting_user: Optional[UserProfile]) -> None: def approve_sponsorship(realm: Realm, *, acting_user: Optional[UserProfile]) -> None:
from zerver.lib.actions import do_change_plan_type, internal_send_private_message from zerver.lib.actions import do_change_plan_type, internal_send_private_message
do_change_plan_type(realm, Realm.STANDARD_FREE, acting_user=acting_user) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD_FREE, acting_user=acting_user)
customer = get_customer_by_realm(realm) customer = get_customer_by_realm(realm)
if customer is not None and customer.sponsorship_pending: if customer is not None and customer.sponsorship_pending:
customer.sponsorship_pending = False customer.sponsorship_pending = False
@ -973,7 +973,7 @@ def approve_sponsorship(realm: Realm, *, acting_user: Optional[UserProfile]) ->
def is_sponsored_realm(realm: Realm) -> bool: def is_sponsored_realm(realm: Realm) -> bool:
return realm.plan_type == Realm.STANDARD_FREE return realm.plan_type == Realm.PLAN_TYPE_STANDARD_FREE
def get_discount_for_realm(realm: Realm) -> Optional[Decimal]: def get_discount_for_realm(realm: Realm) -> Optional[Decimal]:
@ -997,7 +997,7 @@ def do_change_plan_status(plan: CustomerPlan, status: int) -> None:
def process_downgrade(plan: CustomerPlan) -> None: def process_downgrade(plan: CustomerPlan) -> None:
from zerver.lib.actions import do_change_plan_type from zerver.lib.actions import do_change_plan_type
do_change_plan_type(plan.customer.realm, Realm.LIMITED, acting_user=None) do_change_plan_type(plan.customer.realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
plan.status = CustomerPlan.ENDED plan.status = CustomerPlan.ENDED
plan.save(update_fields=["status"]) plan.save(update_fields=["status"])

View File

@ -519,7 +519,7 @@ class StripeTest(StripeTestCase):
self.login_user(user) self.login_user(user)
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
self.assert_in_success_response(["Pay annually"], response) self.assert_in_success_response(["Pay annually"], response)
self.assertNotEqual(user.realm.plan_type, Realm.STANDARD) self.assertNotEqual(user.realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertFalse(Customer.objects.filter(realm=user.realm).exists()) self.assertFalse(Customer.objects.filter(realm=user.realm).exists())
# Click "Make payment" in Stripe Checkout # Click "Make payment" in Stripe Checkout
@ -648,7 +648,7 @@ class StripeTest(StripeTestCase):
) )
# Check that we correctly updated Realm # Check that we correctly updated Realm
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
# Check that we can no longer access /upgrade # Check that we can no longer access /upgrade
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
@ -789,7 +789,7 @@ class StripeTest(StripeTestCase):
) )
# Check that we correctly updated Realm # Check that we correctly updated Realm
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
# Check that we can no longer access /upgrade # Check that we can no longer access /upgrade
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
@ -827,7 +827,7 @@ class StripeTest(StripeTestCase):
free_trial_end_date = self.now + timedelta(days=60) free_trial_end_date = self.now + timedelta(days=60)
self.assert_in_success_response(["Pay annually", "Free Trial", "60 day"], response) self.assert_in_success_response(["Pay annually", "Free Trial", "60 day"], response)
self.assertNotEqual(user.realm.plan_type, Realm.STANDARD) self.assertNotEqual(user.realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertFalse(Customer.objects.filter(realm=user.realm).exists()) self.assertFalse(Customer.objects.filter(realm=user.realm).exists())
with patch("corporate.lib.stripe.timezone_now", return_value=self.now): with patch("corporate.lib.stripe.timezone_now", return_value=self.now):
@ -904,7 +904,7 @@ class StripeTest(StripeTestCase):
) )
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
with patch("corporate.views.billing_page.timezone_now", return_value=self.now): with patch("corporate.views.billing_page.timezone_now", return_value=self.now):
@ -959,7 +959,7 @@ class StripeTest(StripeTestCase):
realm.refresh_from_db() realm.refresh_from_db()
self.assertEqual(customer_plan.status, CustomerPlan.ACTIVE) self.assertEqual(customer_plan.status, CustomerPlan.ACTIVE)
self.assertEqual(customer_plan.next_invoice_date, add_months(free_trial_end_date, 1)) self.assertEqual(customer_plan.next_invoice_date, add_months(free_trial_end_date, 1))
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
[invoice] = stripe.Invoice.list(customer=stripe_customer.id) [invoice] = stripe.Invoice.list(customer=stripe_customer.id)
invoice_params = { invoice_params = {
"amount_due": 15 * 80 * 100, "amount_due": 15 * 80 * 100,
@ -1035,7 +1035,7 @@ class StripeTest(StripeTestCase):
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
self.assert_in_success_response(["Pay annually", "Free Trial", "60 day"], response) self.assert_in_success_response(["Pay annually", "Free Trial", "60 day"], response)
self.assertNotEqual(user.realm.plan_type, Realm.STANDARD) self.assertNotEqual(user.realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertFalse(Customer.objects.filter(realm=user.realm).exists()) self.assertFalse(Customer.objects.filter(realm=user.realm).exists())
with patch("corporate.lib.stripe.timezone_now", return_value=self.now): with patch("corporate.lib.stripe.timezone_now", return_value=self.now):
@ -1105,7 +1105,7 @@ class StripeTest(StripeTestCase):
) )
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
with patch("corporate.views.billing_page.timezone_now", return_value=self.now): with patch("corporate.views.billing_page.timezone_now", return_value=self.now):
@ -1138,7 +1138,7 @@ class StripeTest(StripeTestCase):
realm.refresh_from_db() realm.refresh_from_db()
self.assertEqual(customer_plan.status, CustomerPlan.ACTIVE) self.assertEqual(customer_plan.status, CustomerPlan.ACTIVE)
self.assertEqual(customer_plan.next_invoice_date, add_months(free_trial_end_date, 12)) self.assertEqual(customer_plan.next_invoice_date, add_months(free_trial_end_date, 12))
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
[invoice] = stripe.Invoice.list(customer=stripe_customer.id) [invoice] = stripe.Invoice.list(customer=stripe_customer.id)
invoice_params = { invoice_params = {
"amount_due": 123 * 80 * 100, "amount_due": 123 * 80 * 100,
@ -1273,7 +1273,7 @@ class StripeTest(StripeTestCase):
) )
# Check that we did not update Realm # Check that we did not update Realm
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertNotEqual(realm.plan_type, Realm.STANDARD) self.assertNotEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
# Check that we still get redirected to /upgrade # Check that we still get redirected to /upgrade
response = self.client_get("/billing/") response = self.client_get("/billing/")
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
@ -1315,7 +1315,7 @@ class StripeTest(StripeTestCase):
) )
# Check that we correctly updated Realm # Check that we correctly updated Realm
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
# Check that we can no longer access /upgrade # Check that we can no longer access /upgrade
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
@ -1589,7 +1589,7 @@ class StripeTest(StripeTestCase):
response, response,
) )
user.realm.plan_type = Realm.STANDARD_FREE user.realm.plan_type = Realm.PLAN_TYPE_STANDARD_FREE
user.realm.save() user.realm.save()
self.login_user(self.example_user("hamlet")) self.login_user(self.example_user("hamlet"))
response = self.client_get("/billing/") response = self.client_get("/billing/")
@ -1604,12 +1604,12 @@ class StripeTest(StripeTestCase):
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual("/upgrade/", response.url) self.assertEqual("/upgrade/", response.url)
user.realm.plan_type = Realm.STANDARD_FREE user.realm.plan_type = Realm.PLAN_TYPE_STANDARD_FREE
user.realm.save() user.realm.save()
response = self.client_get("/billing/") response = self.client_get("/billing/")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
user.realm.plan_type = Realm.LIMITED user.realm.plan_type = Realm.PLAN_TYPE_LIMITED
user.realm.save() user.realm.save()
Customer.objects.create(realm=user.realm, stripe_customer_id="cus_123") Customer.objects.create(realm=user.realm, stripe_customer_id="cus_123")
response = self.client_get("/billing/") response = self.client_get("/billing/")
@ -1623,13 +1623,13 @@ class StripeTest(StripeTestCase):
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
user.realm.plan_type = Realm.STANDARD_FREE user.realm.plan_type = Realm.PLAN_TYPE_STANDARD_FREE
user.realm.save() user.realm.save()
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, "/billing/") self.assertEqual(response.url, "/billing/")
user.realm.plan_type = Realm.LIMITED user.realm.plan_type = Realm.PLAN_TYPE_LIMITED
user.realm.save() user.realm.save()
customer = Customer.objects.create(realm=user.realm, stripe_customer_id="cus_123") customer = Customer.objects.create(realm=user.realm, stripe_customer_id="cus_123")
response = self.client_get("/upgrade/") response = self.client_get("/upgrade/")
@ -1809,7 +1809,7 @@ class StripeTest(StripeTestCase):
user = self.example_user("hamlet") user = self.example_user("hamlet")
approve_sponsorship(user.realm, acting_user=user) approve_sponsorship(user.realm, acting_user=user)
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.STANDARD_FREE) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD_FREE)
expected_message = "Your organization's request for sponsored hosting has been approved! :tada:.\nYou have been upgraded to Zulip Cloud Standard, free of charge." expected_message = "Your organization's request for sponsored hosting has been approved! :tada:.\nYou have been upgraded to Zulip Cloud Standard, free of charge."
sender = get_system_bot(settings.NOTIFICATION_BOT, user.realm_id) sender = get_system_bot(settings.NOTIFICATION_BOT, user.realm_id)
@ -1986,7 +1986,7 @@ class StripeTest(StripeTestCase):
update_license_ledger_if_needed(user.realm, self.next_year) update_license_ledger_if_needed(user.realm, self.next_year)
plan = CustomerPlan.objects.first() plan = CustomerPlan.objects.first()
assert plan is not None assert plan is not None
self.assertEqual(get_realm("zulip").plan_type, Realm.LIMITED) self.assertEqual(get_realm("zulip").plan_type, Realm.PLAN_TYPE_LIMITED)
self.assertEqual(plan.status, CustomerPlan.ENDED) self.assertEqual(plan.status, CustomerPlan.ENDED)
self.assertEqual( self.assertEqual(
LicenseLedger.objects.order_by("-id") LicenseLedger.objects.order_by("-id")
@ -2400,7 +2400,7 @@ class StripeTest(StripeTestCase):
plan = CustomerPlan.objects.get() plan = CustomerPlan.objects.get()
self.assertEqual(plan.next_invoice_date, free_trial_end_date) self.assertEqual(plan.next_invoice_date, free_trial_end_date)
self.assertEqual(get_realm("zulip").plan_type, Realm.STANDARD) self.assertEqual(get_realm("zulip").plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(plan.status, CustomerPlan.FREE_TRIAL) self.assertEqual(plan.status, CustomerPlan.FREE_TRIAL)
# Add some extra users before the realm is deactivated # Add some extra users before the realm is deactivated
@ -2418,7 +2418,7 @@ class StripeTest(StripeTestCase):
self.client_patch("/json/billing/plan", {"status": CustomerPlan.ENDED}) self.client_patch("/json/billing/plan", {"status": CustomerPlan.ENDED})
plan.refresh_from_db() plan.refresh_from_db()
self.assertEqual(get_realm("zulip").plan_type, Realm.LIMITED) self.assertEqual(get_realm("zulip").plan_type, Realm.PLAN_TYPE_LIMITED)
self.assertEqual(plan.status, CustomerPlan.ENDED) self.assertEqual(plan.status, CustomerPlan.ENDED)
self.assertEqual(plan.invoiced_through, last_ledger_entry) self.assertEqual(plan.invoiced_through, last_ledger_entry)
self.assertIsNone(plan.next_invoice_date) self.assertIsNone(plan.next_invoice_date)
@ -2485,7 +2485,7 @@ class StripeTest(StripeTestCase):
assert current_plan is not None assert current_plan is not None
next_invoice_date = add_months(self.next_year, 1) next_invoice_date = add_months(self.next_year, 1)
self.assertEqual(current_plan.next_invoice_date, next_invoice_date) self.assertEqual(current_plan.next_invoice_date, next_invoice_date)
self.assertEqual(get_realm("zulip").plan_type, Realm.STANDARD) self.assertEqual(get_realm("zulip").plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(current_plan.status, CustomerPlan.ACTIVE) self.assertEqual(current_plan.status, CustomerPlan.ACTIVE)
old_plan = CustomerPlan.objects.all().order_by("id").first() old_plan = CustomerPlan.objects.all().order_by("id").first()
@ -2703,7 +2703,7 @@ class StripeTest(StripeTestCase):
plan = CustomerPlan.objects.get() plan = CustomerPlan.objects.get()
self.assertEqual(plan.next_invoice_date, self.next_month) self.assertEqual(plan.next_invoice_date, self.next_month)
self.assertEqual(get_realm("zulip").plan_type, Realm.STANDARD) self.assertEqual(get_realm("zulip").plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(plan.status, CustomerPlan.ACTIVE) self.assertEqual(plan.status, CustomerPlan.ACTIVE)
# Add some extra users before the realm is deactivated # Add some extra users before the realm is deactivated
@ -2719,7 +2719,7 @@ class StripeTest(StripeTestCase):
plan.refresh_from_db() plan.refresh_from_db()
self.assertTrue(get_realm("zulip").deactivated) self.assertTrue(get_realm("zulip").deactivated)
self.assertEqual(get_realm("zulip").plan_type, Realm.LIMITED) self.assertEqual(get_realm("zulip").plan_type, Realm.PLAN_TYPE_LIMITED)
self.assertEqual(plan.status, CustomerPlan.ENDED) self.assertEqual(plan.status, CustomerPlan.ENDED)
self.assertEqual(plan.invoiced_through, last_ledger_entry) self.assertEqual(plan.invoiced_through, last_ledger_entry)
self.assertIsNone(plan.next_invoice_date) self.assertIsNone(plan.next_invoice_date)
@ -2764,7 +2764,7 @@ class StripeTest(StripeTestCase):
current_plan = CustomerPlan.objects.all().order_by("id").last() current_plan = CustomerPlan.objects.all().order_by("id").last()
assert current_plan is not None assert current_plan is not None
self.assertEqual(current_plan.next_invoice_date, self.next_month) self.assertEqual(current_plan.next_invoice_date, self.next_month)
self.assertEqual(get_realm("zulip").plan_type, Realm.STANDARD) self.assertEqual(get_realm("zulip").plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(current_plan.status, CustomerPlan.ACTIVE) self.assertEqual(current_plan.status, CustomerPlan.ACTIVE)
old_plan = CustomerPlan.objects.all().order_by("id").first() old_plan = CustomerPlan.objects.all().order_by("id").first()
@ -2907,44 +2907,44 @@ class StripeTest(StripeTestCase):
) )
# To create local Customer object but no Stripe customer. # To create local Customer object but no Stripe customer.
attach_discount_to_realm(realm, Decimal(20), acting_user=None) attach_discount_to_realm(realm, Decimal(20), acting_user=None)
rows.append(Row(realm, Realm.SELF_HOSTED, None, None, False, False)) rows.append(Row(realm, Realm.PLAN_TYPE_SELF_HOSTED, None, None, False, False))
realm, _, _, _ = create_realm( realm, _, _, _ = create_realm(
users_to_create=1, create_stripe_customer=True, create_plan=False users_to_create=1, create_stripe_customer=True, create_plan=False
) )
rows.append(Row(realm, Realm.SELF_HOSTED, None, None, False, False)) rows.append(Row(realm, Realm.PLAN_TYPE_SELF_HOSTED, None, None, False, False))
realm, customer, _, _ = create_realm( realm, customer, _, _ = create_realm(
users_to_create=1, create_stripe_customer=True, create_plan=False, num_invoices=1 users_to_create=1, create_stripe_customer=True, create_plan=False, num_invoices=1
) )
rows.append(Row(realm, Realm.SELF_HOSTED, None, None, True, False)) rows.append(Row(realm, Realm.PLAN_TYPE_SELF_HOSTED, None, None, True, False))
realm, _, plan, _ = create_realm( realm, _, plan, _ = create_realm(
users_to_create=1, create_stripe_customer=True, create_plan=True users_to_create=1, create_stripe_customer=True, create_plan=True
) )
rows.append(Row(realm, Realm.STANDARD, plan, CustomerPlan.ACTIVE, False, False)) rows.append(Row(realm, Realm.PLAN_TYPE_STANDARD, plan, CustomerPlan.ACTIVE, False, False))
realm, customer, plan, _ = create_realm( realm, customer, plan, _ = create_realm(
users_to_create=1, create_stripe_customer=True, create_plan=True, num_invoices=1 users_to_create=1, create_stripe_customer=True, create_plan=True, num_invoices=1
) )
rows.append(Row(realm, Realm.STANDARD, plan, CustomerPlan.ACTIVE, False, False)) rows.append(Row(realm, Realm.PLAN_TYPE_STANDARD, plan, CustomerPlan.ACTIVE, False, False))
realm, customer, plan, _ = create_realm( realm, customer, plan, _ = create_realm(
users_to_create=3, create_stripe_customer=True, create_plan=True, num_invoices=2 users_to_create=3, create_stripe_customer=True, create_plan=True, num_invoices=2
) )
rows.append(Row(realm, Realm.LIMITED, plan, CustomerPlan.ENDED, True, True)) rows.append(Row(realm, Realm.PLAN_TYPE_LIMITED, plan, CustomerPlan.ENDED, True, True))
realm, customer, plan, invoices = create_realm( realm, customer, plan, invoices = create_realm(
users_to_create=1, create_stripe_customer=True, create_plan=True, num_invoices=2 users_to_create=1, create_stripe_customer=True, create_plan=True, num_invoices=2
) )
for invoice in invoices: for invoice in invoices:
stripe.Invoice.pay(invoice, paid_out_of_band=True) stripe.Invoice.pay(invoice, paid_out_of_band=True)
rows.append(Row(realm, Realm.STANDARD, plan, CustomerPlan.ACTIVE, False, False)) rows.append(Row(realm, Realm.PLAN_TYPE_STANDARD, plan, CustomerPlan.ACTIVE, False, False))
realm, customer, plan, _ = create_realm( realm, customer, plan, _ = create_realm(
users_to_create=20, create_stripe_customer=True, create_plan=True, num_invoices=2 users_to_create=20, create_stripe_customer=True, create_plan=True, num_invoices=2
) )
rows.append(Row(realm, Realm.STANDARD, plan, CustomerPlan.ACTIVE, False, False)) rows.append(Row(realm, Realm.PLAN_TYPE_STANDARD, plan, CustomerPlan.ACTIVE, False, False))
with patch("corporate.lib.stripe.void_all_open_invoices") as void_all_open_invoices_mock: with patch("corporate.lib.stripe.void_all_open_invoices") as void_all_open_invoices_mock:
downgrade_small_realms_behind_on_payments_as_needed() downgrade_small_realms_behind_on_payments_as_needed()
@ -3429,7 +3429,7 @@ class BillingHelpersTest(ZulipTestCase):
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertFalse(is_sponsored_realm(realm)) self.assertFalse(is_sponsored_realm(realm))
realm.plan_type = Realm.STANDARD_FREE realm.plan_type = Realm.PLAN_TYPE_STANDARD_FREE
realm.save() realm.save()
self.assertTrue(is_sponsored_realm(realm)) self.assertTrue(is_sponsored_realm(realm))
@ -3787,7 +3787,7 @@ class TestTestClasses(ZulipTestCase):
self.assertEqual(ledger.licenses_at_next_renewal, 60) self.assertEqual(ledger.licenses_at_next_renewal, 60)
realm.refresh_from_db() realm.refresh_from_db()
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
def test_subscribe_realm_to_monthly_plan_on_manual_license_management(self) -> None: def test_subscribe_realm_to_monthly_plan_on_manual_license_management(self) -> None:
realm = get_realm("zulip") realm = get_realm("zulip")
@ -3808,4 +3808,4 @@ class TestTestClasses(ZulipTestCase):
self.assertEqual(ledger.licenses_at_next_renewal, 30) self.assertEqual(ledger.licenses_at_next_renewal, 30)
realm.refresh_from_db() realm.refresh_from_db()
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)

View File

@ -75,7 +75,7 @@ def billing_home(
"has_active_plan": False, "has_active_plan": False,
} }
if user.realm.plan_type == user.realm.STANDARD_FREE: if user.realm.plan_type == user.realm.PLAN_TYPE_STANDARD_FREE:
context["is_sponsored"] = True context["is_sponsored"] = True
return render(request, "corporate/billing.html", context=context) return render(request, "corporate/billing.html", context=context)

View File

@ -26,14 +26,14 @@
</div> </div>
<div class="bottom"> <div class="bottom">
<div class="text-content"> <div class="text-content">
{% if not realm or realm.plan_type == realm.SELF_HOSTED %} {% if not realm or realm.plan_type == realm.PLAN_TYPE_SELF_HOSTED %}
<div class="pricing-details"> <div class="pricing-details">
Free cloud service Free cloud service
</div> </div>
<a href="/new/" class="button green"> <a href="/new/" class="button green">
Create organization Create organization
</a> </a>
{% elif realm.plan_type == realm.LIMITED or sponsorship_pending %} {% elif realm.plan_type == realm.PLAN_TYPE_LIMITED or sponsorship_pending %}
<div class="pricing-details"></div> <div class="pricing-details"></div>
<a href='/upgrade' class="button black-current-value" type="button"> <a href='/upgrade' class="button black-current-value" type="button">
Current plan Current plan
@ -79,7 +79,7 @@
Upgrade to Standard Upgrade to Standard
{% endif %} {% endif %}
</a> </a>
{% elif realm.plan_type in [realm.STANDARD, realm.STANDARD_FREE] %} {% elif realm.plan_type in [realm.PLAN_TYPE_STANDARD, realm.PLAN_TYPE_STANDARD_FREE] %}
<a href='/billing' class="button black-current-value" type="button"> <a href='/billing' class="button black-current-value" type="button">
{% if realm_on_free_trial %} {% if realm_on_free_trial %}
Current plan (free trial) Current plan (free trial)

View File

@ -4625,23 +4625,23 @@ def do_change_plan_type(
extra_data={"old_value": old_value, "new_value": plan_type}, extra_data={"old_value": old_value, "new_value": plan_type},
) )
if plan_type == Realm.PLUS: if plan_type == Realm.PLAN_TYPE_PLUS:
realm.max_invites = Realm.INVITES_STANDARD_REALM_DAILY_MAX realm.max_invites = Realm.INVITES_STANDARD_REALM_DAILY_MAX
realm.message_visibility_limit = None realm.message_visibility_limit = None
realm.upload_quota_gb = Realm.UPLOAD_QUOTA_STANDARD realm.upload_quota_gb = Realm.UPLOAD_QUOTA_STANDARD
elif plan_type == Realm.STANDARD: elif plan_type == Realm.PLAN_TYPE_STANDARD:
realm.max_invites = Realm.INVITES_STANDARD_REALM_DAILY_MAX realm.max_invites = Realm.INVITES_STANDARD_REALM_DAILY_MAX
realm.message_visibility_limit = None realm.message_visibility_limit = None
realm.upload_quota_gb = Realm.UPLOAD_QUOTA_STANDARD realm.upload_quota_gb = Realm.UPLOAD_QUOTA_STANDARD
elif plan_type == Realm.SELF_HOSTED: elif plan_type == Realm.PLAN_TYPE_SELF_HOSTED:
realm.max_invites = None # type: ignore[assignment] # Apparent mypy bug with Optional[int] setter. realm.max_invites = None # type: ignore[assignment] # Apparent mypy bug with Optional[int] setter.
realm.message_visibility_limit = None realm.message_visibility_limit = None
realm.upload_quota_gb = None realm.upload_quota_gb = None
elif plan_type == Realm.STANDARD_FREE: elif plan_type == Realm.PLAN_TYPE_STANDARD_FREE:
realm.max_invites = Realm.INVITES_STANDARD_REALM_DAILY_MAX realm.max_invites = Realm.INVITES_STANDARD_REALM_DAILY_MAX
realm.message_visibility_limit = None realm.message_visibility_limit = None
realm.upload_quota_gb = Realm.UPLOAD_QUOTA_STANDARD realm.upload_quota_gb = Realm.UPLOAD_QUOTA_STANDARD
elif plan_type == Realm.LIMITED: elif plan_type == Realm.PLAN_TYPE_LIMITED:
realm.max_invites = settings.INVITES_DEFAULT_REALM_DAILY_MAX realm.max_invites = settings.INVITES_DEFAULT_REALM_DAILY_MAX
realm.message_visibility_limit = Realm.MESSAGE_VISIBILITY_LIMITED realm.message_visibility_limit = Realm.MESSAGE_VISIBILITY_LIMITED
realm.upload_quota_gb = Realm.UPLOAD_QUOTA_LIMITED realm.upload_quota_gb = Realm.UPLOAD_QUOTA_LIMITED
@ -5137,7 +5137,7 @@ def do_create_realm(
realm.save(update_fields=["notifications_stream", "signup_notifications_stream"]) realm.save(update_fields=["notifications_stream", "signup_notifications_stream"])
if plan_type is None and settings.BILLING_ENABLED: if plan_type is None and settings.BILLING_ENABLED:
do_change_plan_type(realm, Realm.LIMITED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
admin_realm = get_realm(settings.SYSTEM_BOT_REALM) admin_realm = get_realm(settings.SYSTEM_BOT_REALM)
sender = get_system_bot(settings.NOTIFICATION_BOT, admin_realm.id) sender = get_system_bot(settings.NOTIFICATION_BOT, admin_realm.id)

View File

@ -282,7 +282,7 @@ def fetch_initial_state_data(
state["realm_is_zephyr_mirror_realm"] = realm.is_zephyr_mirror_realm state["realm_is_zephyr_mirror_realm"] = realm.is_zephyr_mirror_realm
state["development_environment"] = settings.DEVELOPMENT state["development_environment"] = settings.DEVELOPMENT
state["realm_plan_type"] = realm.plan_type state["realm_plan_type"] = realm.plan_type
state["zulip_plan_is_not_limited"] = realm.plan_type != Realm.LIMITED state["zulip_plan_is_not_limited"] = realm.plan_type != Realm.PLAN_TYPE_LIMITED
state["upgrade_text_for_wide_organization_logo"] = str(Realm.UPGRADE_TEXT_STANDARD) state["upgrade_text_for_wide_organization_logo"] = str(Realm.UPGRADE_TEXT_STANDARD)
state["password_min_length"] = settings.PASSWORD_MIN_LENGTH state["password_min_length"] = settings.PASSWORD_MIN_LENGTH
@ -944,7 +944,7 @@ def apply_event(
if event["property"] == "plan_type": if event["property"] == "plan_type":
# Then there are some extra fields that also need to be set. # Then there are some extra fields that also need to be set.
state["zulip_plan_is_not_limited"] = event["value"] != Realm.LIMITED state["zulip_plan_is_not_limited"] = event["value"] != Realm.PLAN_TYPE_LIMITED
state["realm_upload_quota_mib"] = event["extra_data"]["upload_quota"] state["realm_upload_quota_mib"] = event["extra_data"]["upload_quota"]
policy_permission_dict = { policy_permission_dict = {

View File

@ -68,7 +68,7 @@ def promote_sponsoring_zulip_in_realm(realm: Realm) -> bool:
# If PROMOTE_SPONSORING_ZULIP is enabled, advertise sponsoring # If PROMOTE_SPONSORING_ZULIP is enabled, advertise sponsoring
# Zulip in the gear menu of non-paying organizations. # Zulip in the gear menu of non-paying organizations.
return realm.plan_type in [Realm.STANDARD_FREE, Realm.SELF_HOSTED] return realm.plan_type in [Realm.PLAN_TYPE_STANDARD_FREE, Realm.PLAN_TYPE_SELF_HOSTED]
def get_billing_info(user_profile: Optional[UserProfile]) -> BillingInfo: def get_billing_info(user_profile: Optional[UserProfile]) -> BillingInfo:
@ -85,7 +85,7 @@ def get_billing_info(user_profile: Optional[UserProfile]) -> BillingInfo:
elif CustomerPlan.objects.filter(customer=customer).exists(): elif CustomerPlan.objects.filter(customer=customer).exists():
show_billing = True show_billing = True
if not user_profile.is_guest and user_profile.realm.plan_type == Realm.LIMITED: if not user_profile.is_guest and user_profile.realm.plan_type == Realm.PLAN_TYPE_LIMITED:
show_plans = True show_plans = True
return BillingInfo( return BillingInfo(

View File

@ -1265,9 +1265,9 @@ def do_import_realm(import_dir: Path, subdomain: str, processes: int = 1) -> Rea
import_analytics_data(realm=realm, import_dir=import_dir) import_analytics_data(realm=realm, import_dir=import_dir)
if settings.BILLING_ENABLED: if settings.BILLING_ENABLED:
do_change_plan_type(realm, Realm.LIMITED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
else: else:
do_change_plan_type(realm, Realm.SELF_HOSTED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_SELF_HOSTED, acting_user=None)
return realm return realm

View File

@ -7,7 +7,7 @@ from zerver.models import Realm
def get_realm_logo_source(realm: Realm, night: bool) -> str: def get_realm_logo_source(realm: Realm, night: bool) -> str:
if realm.plan_type == Realm.LIMITED: if realm.plan_type == Realm.PLAN_TYPE_LIMITED:
return Realm.LOGO_DEFAULT return Realm.LOGO_DEFAULT
if night: if night:
return realm.night_logo_source return realm.night_logo_source

View File

@ -1338,7 +1338,7 @@ Output:
licenses=licenses, licenses=licenses,
licenses_at_next_renewal=licenses_at_next_renewal, licenses_at_next_renewal=licenses_at_next_renewal,
) )
realm.plan_type = Realm.STANDARD realm.plan_type = Realm.PLAN_TYPE_STANDARD
realm.save(update_fields=["plan_type"]) realm.save(update_fields=["plan_type"])
return plan, ledger return plan, ledger

View File

@ -83,7 +83,7 @@ class Command(ZulipBaseCommand):
# Sends at most one copy to each email address, even if it # Sends at most one copy to each email address, even if it
# is an administrator in several organizations. # is an administrator in several organizations.
sponsored_realms = Realm.objects.filter( sponsored_realms = Realm.objects.filter(
plan_type=Realm.STANDARD_FREE, deactivated=False plan_type=Realm.PLAN_TYPE_STANDARD_FREE, deactivated=False
) )
admin_roles = [UserProfile.ROLE_REALM_ADMINISTRATOR, UserProfile.ROLE_REALM_OWNER] admin_roles = [UserProfile.ROLE_REALM_ADMINISTRATOR, UserProfile.ROLE_REALM_OWNER]
users = UserProfile.objects.filter( users = UserProfile.objects.filter(

View File

@ -536,12 +536,12 @@ class Realm(models.Model):
# plan_type controls various features around resource/feature # plan_type controls various features around resource/feature
# limitations for a Zulip organization on multi-tenant installations # limitations for a Zulip organization on multi-tenant installations
# like Zulip Cloud. # like Zulip Cloud.
SELF_HOSTED = 1 PLAN_TYPE_SELF_HOSTED = 1
LIMITED = 2 PLAN_TYPE_LIMITED = 2
STANDARD = 3 PLAN_TYPE_STANDARD = 3
STANDARD_FREE = 4 PLAN_TYPE_STANDARD_FREE = 4
PLUS = 10 PLAN_TYPE_PLUS = 10
plan_type: int = models.PositiveSmallIntegerField(default=SELF_HOSTED) plan_type: int = models.PositiveSmallIntegerField(default=PLAN_TYPE_SELF_HOSTED)
# This value is also being used in static/js/settings_bots.bot_creation_policy_values. # This value is also being used in static/js/settings_bots.bot_creation_policy_values.
# On updating it here, update it there as well. # On updating it here, update it there as well.
@ -834,7 +834,7 @@ class Realm(models.Model):
return used_space return used_space
def ensure_not_on_limited_plan(self) -> None: def ensure_not_on_limited_plan(self) -> None:
if self.plan_type == Realm.LIMITED: if self.plan_type == Realm.PLAN_TYPE_LIMITED:
raise JsonableError(self.UPGRADE_TEXT_STANDARD) raise JsonableError(self.UPGRADE_TEXT_STANDARD)
@property @property
@ -885,7 +885,7 @@ class Realm(models.Model):
# the server level before it is available to users. # the server level before it is available to users.
return False return False
if self.plan_type == Realm.LIMITED: if self.plan_type == Realm.PLAN_TYPE_LIMITED:
# In Zulip Cloud, we also require a paid or sponsored # In Zulip Cloud, we also require a paid or sponsored
# plan, to protect against the spam/abuse attacks that # plan, to protect against the spam/abuse attacks that
# target every open Internet service that can host files. # target every open Internet service that can host files.

View File

@ -395,7 +395,7 @@ class PlansPageTest(ZulipTestCase):
self.assert_in_response("does not exist", result) self.assert_in_response("does not exist", result)
realm = get_realm("zulip") realm = get_realm("zulip")
realm.plan_type = Realm.STANDARD_FREE realm.plan_type = Realm.PLAN_TYPE_STANDARD_FREE
realm.save(update_fields=["plan_type"]) realm.save(update_fields=["plan_type"])
result = self.client_get("/plans/", subdomain="zulip") result = self.client_get("/plans/", subdomain="zulip")
self.assertEqual(result.status_code, 302) self.assertEqual(result.status_code, 302)
@ -431,7 +431,7 @@ class PlansPageTest(ZulipTestCase):
self.assert_not_in_success_response([current_plan, sponsorship_pending], result) self.assert_not_in_success_response([current_plan, sponsorship_pending], result)
realm = get_realm("zulip") realm = get_realm("zulip")
realm.plan_type = Realm.SELF_HOSTED realm.plan_type = Realm.PLAN_TYPE_SELF_HOSTED
realm.save(update_fields=["plan_type"]) realm.save(update_fields=["plan_type"])
with self.settings(PRODUCTION=True): with self.settings(PRODUCTION=True):
@ -451,7 +451,7 @@ class PlansPageTest(ZulipTestCase):
self.assert_in_success_response([sign_up_now, upgrade_to_standard], result) self.assert_in_success_response([sign_up_now, upgrade_to_standard], result)
self.assert_not_in_success_response([current_plan, sponsorship_pending], result) self.assert_not_in_success_response([current_plan, sponsorship_pending], result)
realm.plan_type = Realm.LIMITED realm.plan_type = Realm.PLAN_TYPE_LIMITED
realm.save(update_fields=["plan_type"]) realm.save(update_fields=["plan_type"])
result = self.client_get("/plans/", subdomain="zulip") result = self.client_get("/plans/", subdomain="zulip")
self.assert_in_success_response([current_plan, upgrade_to_standard], result) self.assert_in_success_response([current_plan, upgrade_to_standard], result)
@ -464,7 +464,7 @@ class PlansPageTest(ZulipTestCase):
[sign_up_now, sponsorship_pending, upgrade_to_standard], result [sign_up_now, sponsorship_pending, upgrade_to_standard], result
) )
realm.plan_type = Realm.STANDARD_FREE realm.plan_type = Realm.PLAN_TYPE_STANDARD_FREE
realm.save(update_fields=["plan_type"]) realm.save(update_fields=["plan_type"])
result = self.client_get("/plans/", subdomain="zulip") result = self.client_get("/plans/", subdomain="zulip")
self.assert_in_success_response([current_plan], result) self.assert_in_success_response([current_plan], result)
@ -472,7 +472,7 @@ class PlansPageTest(ZulipTestCase):
[sign_up_now, upgrade_to_standard, sponsorship_pending], result [sign_up_now, upgrade_to_standard, sponsorship_pending], result
) )
realm.plan_type = Realm.STANDARD realm.plan_type = Realm.PLAN_TYPE_STANDARD
realm.save(update_fields=["plan_type"]) realm.save(update_fields=["plan_type"])
result = self.client_get("/plans/", subdomain="zulip") result = self.client_get("/plans/", subdomain="zulip")
self.assert_in_success_response([current_plan], result) self.assert_in_success_response([current_plan], result)
@ -494,7 +494,7 @@ class PlansPageTest(ZulipTestCase):
[sign_up_now, upgrade_to_standard, sponsorship_pending], result [sign_up_now, upgrade_to_standard, sponsorship_pending], result
) )
realm.plan_type = Realm.LIMITED realm.plan_type = Realm.PLAN_TYPE_LIMITED
realm.save() realm.save()
customer.sponsorship_pending = True customer.sponsorship_pending = True
customer.save() customer.save()

View File

@ -1542,16 +1542,18 @@ class NormalActionsTest(BaseAction):
realm = self.user_profile.realm realm = self.user_profile.realm
state_data = fetch_initial_state_data(self.user_profile) state_data = fetch_initial_state_data(self.user_profile)
self.assertEqual(state_data["realm_plan_type"], Realm.SELF_HOSTED) self.assertEqual(state_data["realm_plan_type"], Realm.PLAN_TYPE_SELF_HOSTED)
self.assertEqual(state_data["zulip_plan_is_not_limited"], True) self.assertEqual(state_data["zulip_plan_is_not_limited"], True)
events = self.verify_action( events = self.verify_action(
lambda: do_change_plan_type(realm, Realm.LIMITED, acting_user=self.user_profile) lambda: do_change_plan_type(
realm, Realm.PLAN_TYPE_LIMITED, acting_user=self.user_profile
)
) )
check_realm_update("events[0]", events[0], "plan_type") check_realm_update("events[0]", events[0], "plan_type")
state_data = fetch_initial_state_data(self.user_profile) state_data = fetch_initial_state_data(self.user_profile)
self.assertEqual(state_data["realm_plan_type"], Realm.LIMITED) self.assertEqual(state_data["realm_plan_type"], Realm.PLAN_TYPE_LIMITED)
self.assertEqual(state_data["zulip_plan_is_not_limited"], False) self.assertEqual(state_data["zulip_plan_is_not_limited"], False)
def test_realm_emoji_events(self) -> None: def test_realm_emoji_events(self) -> None:

View File

@ -718,7 +718,7 @@ class HomeTest(ZulipTestCase):
self.assertFalse(billing_info.show_plans) self.assertFalse(billing_info.show_plans)
# realm owner, with inactive CustomerPlan and realm plan_type LIMITED -> show billing link and plans # realm owner, with inactive CustomerPlan and realm plan_type LIMITED -> show billing link and plans
do_change_plan_type(user.realm, Realm.LIMITED, acting_user=None) do_change_plan_type(user.realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
with self.settings(CORPORATE_ENABLED=True): with self.settings(CORPORATE_ENABLED=True):
billing_info = get_billing_info(user) billing_info = get_billing_info(user)
self.assertTrue(billing_info.show_billing) self.assertTrue(billing_info.show_billing)
@ -747,7 +747,7 @@ class HomeTest(ZulipTestCase):
# billing admin, with CustomerPlan and realm plan_type STANDARD -> show only billing link # billing admin, with CustomerPlan and realm plan_type STANDARD -> show only billing link
user.role = UserProfile.ROLE_MEMBER user.role = UserProfile.ROLE_MEMBER
user.is_billing_admin = True user.is_billing_admin = True
do_change_plan_type(user.realm, Realm.STANDARD, acting_user=None) do_change_plan_type(user.realm, Realm.PLAN_TYPE_STANDARD, acting_user=None)
user.save(update_fields=["role", "is_billing_admin"]) user.save(update_fields=["role", "is_billing_admin"])
with self.settings(CORPORATE_ENABLED=True): with self.settings(CORPORATE_ENABLED=True):
billing_info = get_billing_info(user) billing_info = get_billing_info(user)
@ -755,7 +755,7 @@ class HomeTest(ZulipTestCase):
self.assertFalse(billing_info.show_plans) self.assertFalse(billing_info.show_plans)
# billing admin, with CustomerPlan and realm plan_type PLUS -> show only billing link # billing admin, with CustomerPlan and realm plan_type PLUS -> show only billing link
do_change_plan_type(user.realm, Realm.PLUS, acting_user=None) do_change_plan_type(user.realm, Realm.PLAN_TYPE_PLUS, acting_user=None)
user.save(update_fields=["role", "is_billing_admin"]) user.save(update_fields=["role", "is_billing_admin"])
with self.settings(CORPORATE_ENABLED=True): with self.settings(CORPORATE_ENABLED=True):
billing_info = get_billing_info(user) billing_info = get_billing_info(user)
@ -763,7 +763,7 @@ class HomeTest(ZulipTestCase):
self.assertFalse(billing_info.show_plans) self.assertFalse(billing_info.show_plans)
# member, with CustomerPlan and realm plan_type STANDARD -> neither billing link or plans # member, with CustomerPlan and realm plan_type STANDARD -> neither billing link or plans
do_change_plan_type(user.realm, Realm.STANDARD, acting_user=None) do_change_plan_type(user.realm, Realm.PLAN_TYPE_STANDARD, acting_user=None)
user.is_billing_admin = False user.is_billing_admin = False
user.save(update_fields=["is_billing_admin"]) user.save(update_fields=["is_billing_admin"])
with self.settings(CORPORATE_ENABLED=True): with self.settings(CORPORATE_ENABLED=True):
@ -774,7 +774,7 @@ class HomeTest(ZulipTestCase):
# guest, with CustomerPlan and realm plan_type SELF_HOSTED -> neither billing link or plans # guest, with CustomerPlan and realm plan_type SELF_HOSTED -> neither billing link or plans
user.role = UserProfile.ROLE_GUEST user.role = UserProfile.ROLE_GUEST
user.save(update_fields=["role"]) user.save(update_fields=["role"])
do_change_plan_type(user.realm, Realm.SELF_HOSTED, acting_user=None) do_change_plan_type(user.realm, Realm.PLAN_TYPE_SELF_HOSTED, acting_user=None)
with self.settings(CORPORATE_ENABLED=True): with self.settings(CORPORATE_ENABLED=True):
billing_info = get_billing_info(user) billing_info = get_billing_info(user)
self.assertFalse(billing_info.show_billing) self.assertFalse(billing_info.show_billing)
@ -808,7 +808,7 @@ class HomeTest(ZulipTestCase):
def test_promote_sponsoring_zulip_in_realm(self) -> None: def test_promote_sponsoring_zulip_in_realm(self) -> None:
realm = get_realm("zulip") realm = get_realm("zulip")
do_change_plan_type(realm, Realm.STANDARD_FREE, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD_FREE, acting_user=None)
promote_zulip = promote_sponsoring_zulip_in_realm(realm) promote_zulip = promote_sponsoring_zulip_in_realm(realm)
self.assertTrue(promote_zulip) self.assertTrue(promote_zulip)
@ -816,15 +816,15 @@ class HomeTest(ZulipTestCase):
promote_zulip = promote_sponsoring_zulip_in_realm(realm) promote_zulip = promote_sponsoring_zulip_in_realm(realm)
self.assertFalse(promote_zulip) self.assertFalse(promote_zulip)
do_change_plan_type(realm, Realm.STANDARD_FREE, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD_FREE, acting_user=None)
promote_zulip = promote_sponsoring_zulip_in_realm(realm) promote_zulip = promote_sponsoring_zulip_in_realm(realm)
self.assertTrue(promote_zulip) self.assertTrue(promote_zulip)
do_change_plan_type(realm, Realm.LIMITED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
promote_zulip = promote_sponsoring_zulip_in_realm(realm) promote_zulip = promote_sponsoring_zulip_in_realm(realm)
self.assertFalse(promote_zulip) self.assertFalse(promote_zulip)
do_change_plan_type(realm, Realm.STANDARD, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD, acting_user=None)
promote_zulip = promote_sponsoring_zulip_in_realm(realm) promote_zulip = promote_sponsoring_zulip_in_realm(realm)
self.assertFalse(promote_zulip) self.assertFalse(promote_zulip)

View File

@ -1231,7 +1231,7 @@ class ImportExportTest(ZulipTestCase):
def test_plan_type(self) -> None: def test_plan_type(self) -> None:
realm = get_realm("zulip") realm = get_realm("zulip")
do_change_plan_type(realm, Realm.LIMITED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
self._setup_export_files(realm) self._setup_export_files(realm)
self._export_realm(realm) self._export_realm(realm)
@ -1240,7 +1240,7 @@ class ImportExportTest(ZulipTestCase):
realm = do_import_realm( realm = do_import_realm(
os.path.join(settings.TEST_WORKER_DIR, "test-export"), "test-zulip-1" os.path.join(settings.TEST_WORKER_DIR, "test-export"), "test-zulip-1"
) )
self.assertEqual(realm.plan_type, Realm.LIMITED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_LIMITED)
self.assertEqual(realm.max_invites, 100) self.assertEqual(realm.max_invites, 100)
self.assertEqual(realm.upload_quota_gb, 5) self.assertEqual(realm.upload_quota_gb, 5)
self.assertEqual(realm.message_visibility_limit, 10000) self.assertEqual(realm.message_visibility_limit, 10000)
@ -1253,7 +1253,7 @@ class ImportExportTest(ZulipTestCase):
realm = do_import_realm( realm = do_import_realm(
os.path.join(settings.TEST_WORKER_DIR, "test-export"), "test-zulip-2" os.path.join(settings.TEST_WORKER_DIR, "test-export"), "test-zulip-2"
) )
self.assertEqual(realm.plan_type, Realm.SELF_HOSTED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_SELF_HOSTED)
self.assertEqual(realm.max_invites, 100) self.assertEqual(realm.max_invites, 100)
self.assertEqual(realm.upload_quota_gb, None) self.assertEqual(realm.upload_quota_gb, None)
self.assertEqual(realm.message_visibility_limit, None) self.assertEqual(realm.message_visibility_limit, None)

View File

@ -357,14 +357,14 @@ class EditMessageTest(EditMessageTestCase):
self.assertEqual(result.json()["raw_content"], "web-public message") self.assertEqual(result.json()["raw_content"], "web-public message")
# Verify LIMITED plan type does not allow web-public access. # Verify LIMITED plan type does not allow web-public access.
do_change_plan_type(user_profile.realm, Realm.LIMITED, acting_user=None) do_change_plan_type(user_profile.realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
result = self.client_get("/json/messages/" + str(web_public_stream_msg_id)) result = self.client_get("/json/messages/" + str(web_public_stream_msg_id))
self.assert_json_error( self.assert_json_error(
result, "Not logged in: API authentication or user session required", 401 result, "Not logged in: API authentication or user session required", 401
) )
# Verify works with STANDARD_FREE plan type too. # Verify works with STANDARD_FREE plan type too.
do_change_plan_type(user_profile.realm, Realm.STANDARD_FREE, acting_user=None) do_change_plan_type(user_profile.realm, Realm.PLAN_TYPE_STANDARD_FREE, acting_user=None)
result = self.client_get("/json/messages/" + str(web_public_stream_msg_id)) result = self.client_get("/json/messages/" + str(web_public_stream_msg_id))
self.assert_json_success(result) self.assert_json_success(result)
self.assertEqual(result.json()["raw_content"], "web-public message") self.assertEqual(result.json()["raw_content"], "web-public message")

View File

@ -626,7 +626,7 @@ class RealmTest(ZulipTestCase):
def test_initial_plan_type(self) -> None: def test_initial_plan_type(self) -> None:
with self.settings(BILLING_ENABLED=True): with self.settings(BILLING_ENABLED=True):
self.assertEqual(do_create_realm("hosted", "hosted").plan_type, Realm.LIMITED) self.assertEqual(do_create_realm("hosted", "hosted").plan_type, Realm.PLAN_TYPE_LIMITED)
self.assertEqual( self.assertEqual(
get_realm("hosted").max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX get_realm("hosted").max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX
) )
@ -636,7 +636,9 @@ class RealmTest(ZulipTestCase):
self.assertEqual(get_realm("hosted").upload_quota_gb, Realm.UPLOAD_QUOTA_LIMITED) self.assertEqual(get_realm("hosted").upload_quota_gb, Realm.UPLOAD_QUOTA_LIMITED)
with self.settings(BILLING_ENABLED=False): with self.settings(BILLING_ENABLED=False):
self.assertEqual(do_create_realm("onpremise", "onpremise").plan_type, Realm.SELF_HOSTED) self.assertEqual(
do_create_realm("onpremise", "onpremise").plan_type, Realm.PLAN_TYPE_SELF_HOSTED
)
self.assertEqual( self.assertEqual(
get_realm("onpremise").max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX get_realm("onpremise").max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX
) )
@ -665,49 +667,52 @@ class RealmTest(ZulipTestCase):
def test_change_plan_type(self) -> None: def test_change_plan_type(self) -> None:
realm = get_realm("zulip") realm = get_realm("zulip")
iago = self.example_user("iago") iago = self.example_user("iago")
self.assertEqual(realm.plan_type, Realm.SELF_HOSTED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_SELF_HOSTED)
self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
self.assertEqual(realm.message_visibility_limit, None) self.assertEqual(realm.message_visibility_limit, None)
self.assertEqual(realm.upload_quota_gb, None) self.assertEqual(realm.upload_quota_gb, None)
do_change_plan_type(realm, Realm.STANDARD, acting_user=iago) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD, acting_user=iago)
realm = get_realm("zulip") realm = get_realm("zulip")
realm_audit_log = RealmAuditLog.objects.filter( realm_audit_log = RealmAuditLog.objects.filter(
event_type=RealmAuditLog.REALM_PLAN_TYPE_CHANGED event_type=RealmAuditLog.REALM_PLAN_TYPE_CHANGED
).last() ).last()
assert realm_audit_log is not None assert realm_audit_log is not None
expected_extra_data = {"old_value": Realm.SELF_HOSTED, "new_value": Realm.STANDARD} expected_extra_data = {
"old_value": Realm.PLAN_TYPE_SELF_HOSTED,
"new_value": Realm.PLAN_TYPE_STANDARD,
}
self.assertEqual(realm_audit_log.extra_data, str(expected_extra_data)) self.assertEqual(realm_audit_log.extra_data, str(expected_extra_data))
self.assertEqual(realm_audit_log.acting_user, iago) self.assertEqual(realm_audit_log.acting_user, iago)
self.assertEqual(realm.plan_type, Realm.STANDARD) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
self.assertEqual(realm.message_visibility_limit, None) self.assertEqual(realm.message_visibility_limit, None)
self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_STANDARD) self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_STANDARD)
do_change_plan_type(realm, Realm.LIMITED, acting_user=iago) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=iago)
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.LIMITED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_LIMITED)
self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
self.assertEqual(realm.message_visibility_limit, Realm.MESSAGE_VISIBILITY_LIMITED) self.assertEqual(realm.message_visibility_limit, Realm.MESSAGE_VISIBILITY_LIMITED)
self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_LIMITED) self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_LIMITED)
do_change_plan_type(realm, Realm.STANDARD_FREE, acting_user=iago) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD_FREE, acting_user=iago)
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.STANDARD_FREE) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD_FREE)
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
self.assertEqual(realm.message_visibility_limit, None) self.assertEqual(realm.message_visibility_limit, None)
self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_STANDARD) self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_STANDARD)
do_change_plan_type(realm, Realm.LIMITED, acting_user=iago) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=iago)
do_change_plan_type(realm, Realm.PLUS, acting_user=iago) do_change_plan_type(realm, Realm.PLAN_TYPE_PLUS, acting_user=iago)
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.PLUS) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_PLUS)
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
self.assertEqual(realm.message_visibility_limit, None) self.assertEqual(realm.message_visibility_limit, None)
self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_STANDARD) self.assertEqual(realm.upload_quota_gb, Realm.UPLOAD_QUOTA_STANDARD)
do_change_plan_type(realm, Realm.SELF_HOSTED, acting_user=iago) do_change_plan_type(realm, Realm.PLAN_TYPE_SELF_HOSTED, acting_user=iago)
self.assertEqual(realm.plan_type, Realm.SELF_HOSTED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_SELF_HOSTED)
self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX) self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
self.assertEqual(realm.message_visibility_limit, None) self.assertEqual(realm.message_visibility_limit, None)
self.assertEqual(realm.upload_quota_gb, None) self.assertEqual(realm.upload_quota_gb, None)
@ -715,7 +720,7 @@ class RealmTest(ZulipTestCase):
def test_message_retention_days(self) -> None: def test_message_retention_days(self) -> None:
self.login("iago") self.login("iago")
realm = get_realm("zulip") realm = get_realm("zulip")
self.assertEqual(realm.plan_type, Realm.SELF_HOSTED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_SELF_HOSTED)
req = dict(message_retention_days=orjson.dumps(10).decode()) req = dict(message_retention_days=orjson.dumps(10).decode())
result = self.client_patch("/json/realm", req) result = self.client_patch("/json/realm", req)
@ -747,12 +752,12 @@ class RealmTest(ZulipTestCase):
result = self.client_patch("/json/realm", req) result = self.client_patch("/json/realm", req)
self.assert_json_success(result) self.assert_json_success(result)
do_change_plan_type(realm, Realm.LIMITED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
req = dict(message_retention_days=orjson.dumps(10).decode()) req = dict(message_retention_days=orjson.dumps(10).decode())
result = self.client_patch("/json/realm", req) result = self.client_patch("/json/realm", req)
self.assert_json_error(result, "Available on Zulip Standard. Upgrade to access.") self.assert_json_error(result, "Available on Zulip Standard. Upgrade to access.")
do_change_plan_type(realm, Realm.STANDARD, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_STANDARD, acting_user=None)
req = dict(message_retention_days=orjson.dumps(10).decode()) req = dict(message_retention_days=orjson.dumps(10).decode())
result = self.client_patch("/json/realm", req) result = self.client_patch("/json/realm", req)
self.assert_json_success(result) self.assert_json_success(result)
@ -766,7 +771,7 @@ class RealmTest(ZulipTestCase):
self.assertEqual(realm.email_address_visibility, Realm.EMAIL_ADDRESS_VISIBILITY_EVERYONE) self.assertEqual(realm.email_address_visibility, Realm.EMAIL_ADDRESS_VISIBILITY_EVERYONE)
self.assertEqual(realm.description, "") self.assertEqual(realm.description, "")
self.assertTrue(realm.invite_required) self.assertTrue(realm.invite_required)
self.assertEqual(realm.plan_type, Realm.LIMITED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_LIMITED)
self.assertEqual(realm.org_type, Realm.ORG_TYPES["unspecified"]["id"]) self.assertEqual(realm.org_type, Realm.ORG_TYPES["unspecified"]["id"])
self.assertEqual(type(realm.date_created), datetime.datetime) self.assertEqual(type(realm.date_created), datetime.datetime)
@ -784,7 +789,7 @@ class RealmTest(ZulipTestCase):
self.assertEqual(realm.signup_notifications_stream.name, "core team") self.assertEqual(realm.signup_notifications_stream.name, "core team")
self.assertEqual(realm.signup_notifications_stream.realm, realm) self.assertEqual(realm.signup_notifications_stream.realm, realm)
self.assertEqual(realm.plan_type, Realm.LIMITED) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_LIMITED)
def test_do_create_realm_with_keyword_arguments(self) -> None: def test_do_create_realm_with_keyword_arguments(self) -> None:
date_created = timezone_now() - datetime.timedelta(days=100) date_created = timezone_now() - datetime.timedelta(days=100)
@ -796,7 +801,7 @@ class RealmTest(ZulipTestCase):
email_address_visibility=Realm.EMAIL_ADDRESS_VISIBILITY_MEMBERS, email_address_visibility=Realm.EMAIL_ADDRESS_VISIBILITY_MEMBERS,
description="realm description", description="realm description",
invite_required=False, invite_required=False,
plan_type=Realm.STANDARD_FREE, plan_type=Realm.PLAN_TYPE_STANDARD_FREE,
org_type=Realm.ORG_TYPES["community"]["id"], org_type=Realm.ORG_TYPES["community"]["id"],
) )
self.assertEqual(realm.string_id, "realm_string_id") self.assertEqual(realm.string_id, "realm_string_id")
@ -805,7 +810,7 @@ class RealmTest(ZulipTestCase):
self.assertEqual(realm.email_address_visibility, Realm.EMAIL_ADDRESS_VISIBILITY_MEMBERS) self.assertEqual(realm.email_address_visibility, Realm.EMAIL_ADDRESS_VISIBILITY_MEMBERS)
self.assertEqual(realm.description, "realm description") self.assertEqual(realm.description, "realm description")
self.assertFalse(realm.invite_required) self.assertFalse(realm.invite_required)
self.assertEqual(realm.plan_type, Realm.STANDARD_FREE) self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD_FREE)
self.assertEqual(realm.org_type, Realm.ORG_TYPES["community"]["id"]) self.assertEqual(realm.org_type, Realm.ORG_TYPES["community"]["id"])
self.assertEqual(realm.date_created, date_created) self.assertEqual(realm.date_created, date_created)
@ -855,7 +860,7 @@ class RealmTest(ZulipTestCase):
self.assertEqual(realm.web_public_streams_enabled(), False) self.assertEqual(realm.web_public_streams_enabled(), False)
self.assertEqual(realm.has_web_public_streams(), False) self.assertEqual(realm.has_web_public_streams(), False)
realm.plan_type = Realm.LIMITED realm.plan_type = Realm.PLAN_TYPE_LIMITED
realm.save() realm.save()
self.assertEqual(Stream.objects.filter(realm=realm, is_web_public=True).count(), 1) self.assertEqual(Stream.objects.filter(realm=realm, is_web_public=True).count(), 1)
self.assertEqual(realm.web_public_streams_enabled(), False) self.assertEqual(realm.web_public_streams_enabled(), False)

View File

@ -1263,7 +1263,7 @@ class StreamAdminTest(ZulipTestCase):
user_profile = self.example_user("desdemona") user_profile = self.example_user("desdemona")
self.login_user(user_profile) self.login_user(user_profile)
realm = user_profile.realm realm = user_profile.realm
do_change_plan_type(realm, Realm.LIMITED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
stream = self.subscribe(user_profile, "stream_name1") stream = self.subscribe(user_profile, "stream_name1")
result = self.client_patch( result = self.client_patch(
@ -1271,7 +1271,7 @@ class StreamAdminTest(ZulipTestCase):
) )
self.assert_json_error(result, "Available on Zulip Standard. Upgrade to access.") self.assert_json_error(result, "Available on Zulip Standard. Upgrade to access.")
do_change_plan_type(realm, Realm.SELF_HOSTED, acting_user=None) do_change_plan_type(realm, Realm.PLAN_TYPE_SELF_HOSTED, acting_user=None)
events: List[Mapping[str, Any]] = [] events: List[Mapping[str, Any]] = []
with self.tornado_redirected_to_list(events, expected_num_events=1): with self.tornado_redirected_to_list(events, expected_num_events=1):
result = self.client_patch( result = self.client_patch(
@ -1437,13 +1437,13 @@ class StreamAdminTest(ZulipTestCase):
}, },
] ]
do_change_plan_type(realm, Realm.LIMITED, acting_user=admin) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=admin)
with self.assertRaisesRegex( with self.assertRaisesRegex(
JsonableError, "Available on Zulip Standard. Upgrade to access." JsonableError, "Available on Zulip Standard. Upgrade to access."
): ):
list_to_streams(streams_raw, owner, autocreate=True) list_to_streams(streams_raw, owner, autocreate=True)
do_change_plan_type(realm, Realm.SELF_HOSTED, acting_user=admin) do_change_plan_type(realm, Realm.PLAN_TYPE_SELF_HOSTED, acting_user=admin)
result = list_to_streams(streams_raw, owner, autocreate=True) result = list_to_streams(streams_raw, owner, autocreate=True)
self.assert_length(result[0], 0) self.assert_length(result[0], 0)
self.assert_length(result[1], 3) self.assert_length(result[1], 3)

View File

@ -1512,7 +1512,7 @@ class RealmLogoTest(UploadSerializeMixin, ZulipTestCase):
def test_upload_limited_plan_type(self) -> None: def test_upload_limited_plan_type(self) -> None:
user_profile = self.example_user("iago") user_profile = self.example_user("iago")
do_change_plan_type(user_profile.realm, Realm.LIMITED, acting_user=None) do_change_plan_type(user_profile.realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
self.login_user(user_profile) self.login_user(user_profile)
with get_test_image_file(self.correct_files[0][0]) as fp: with get_test_image_file(self.correct_files[0][0]) as fp:
result = self.client_post( result = self.client_post(
@ -1556,7 +1556,7 @@ class RealmLogoTest(UploadSerializeMixin, ZulipTestCase):
f"/user_avatars/{realm.id}/realm/{file_name}?version=2&night={is_night_str}", f"/user_avatars/{realm.id}/realm/{file_name}?version=2&night={is_night_str}",
) )
do_change_plan_type(realm, Realm.LIMITED, acting_user=user_profile) do_change_plan_type(realm, Realm.PLAN_TYPE_LIMITED, acting_user=user_profile)
if self.night: if self.night:
self.assertEqual(realm.night_logo_source, Realm.LOGO_UPLOADED) self.assertEqual(realm.night_logo_source, Realm.LOGO_UPLOADED)
else: else:

View File

@ -44,7 +44,7 @@ def plans_view(request: HttpRequest) -> HttpResponse:
realm_on_free_trial = False realm_on_free_trial = False
if realm is not None: if realm is not None:
if realm.plan_type == Realm.SELF_HOSTED and settings.PRODUCTION: if realm.plan_type == Realm.PLAN_TYPE_SELF_HOSTED and settings.PRODUCTION:
return HttpResponseRedirect("https://zulip.com/plans") return HttpResponseRedirect("https://zulip.com/plans")
if not request.user.is_authenticated: if not request.user.is_authenticated:
return redirect_to_login(next="/plans") return redirect_to_login(next="/plans")

View File

@ -312,7 +312,7 @@ class Command(BaseCommand):
description="The Zulip development environment default organization." description="The Zulip development environment default organization."
" It's great for testing!", " It's great for testing!",
invite_required=False, invite_required=False,
plan_type=Realm.SELF_HOSTED, plan_type=Realm.PLAN_TYPE_SELF_HOSTED,
org_type=Realm.ORG_TYPES["business"]["id"], org_type=Realm.ORG_TYPES["business"]["id"],
) )
RealmDomain.objects.create(realm=zulip_realm, domain="zulip.com") RealmDomain.objects.create(realm=zulip_realm, domain="zulip.com")
@ -327,7 +327,7 @@ class Command(BaseCommand):
name="MIT", name="MIT",
emails_restricted_to_domains=True, emails_restricted_to_domains=True,
invite_required=False, invite_required=False,
plan_type=Realm.SELF_HOSTED, plan_type=Realm.PLAN_TYPE_SELF_HOSTED,
org_type=Realm.ORG_TYPES["business"]["id"], org_type=Realm.ORG_TYPES["business"]["id"],
) )
RealmDomain.objects.create(realm=mit_realm, domain="mit.edu") RealmDomain.objects.create(realm=mit_realm, domain="mit.edu")
@ -337,7 +337,7 @@ class Command(BaseCommand):
name="Lear & Co.", name="Lear & Co.",
emails_restricted_to_domains=False, emails_restricted_to_domains=False,
invite_required=False, invite_required=False,
plan_type=Realm.SELF_HOSTED, plan_type=Realm.PLAN_TYPE_SELF_HOSTED,
org_type=Realm.ORG_TYPES["business"]["id"], org_type=Realm.ORG_TYPES["business"]["id"],
) )