mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
realm: Restrict upload quota according to plan.
This commit is contained in:
@@ -3305,16 +3305,19 @@ def do_change_plan_type(realm: Realm, plan_type: int) -> None:
|
|||||||
if plan_type == Realm.STANDARD:
|
if plan_type == Realm.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
|
||||||
elif plan_type == Realm.STANDARD_FREE:
|
elif plan_type == Realm.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
|
||||||
elif plan_type == Realm.LIMITED:
|
elif plan_type == Realm.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
|
||||||
|
|
||||||
update_first_visible_message_id(realm)
|
update_first_visible_message_id(realm)
|
||||||
|
|
||||||
realm.save(update_fields=['_max_invites', 'message_visibility_limit'])
|
realm.save(update_fields=['_max_invites', 'message_visibility_limit', 'upload_quota_gb'])
|
||||||
|
|
||||||
def do_change_default_sending_stream(user_profile: UserProfile, stream: Optional[Stream],
|
def do_change_default_sending_stream(user_profile: UserProfile, stream: Optional[Stream],
|
||||||
log: bool=True) -> None:
|
log: bool=True) -> None:
|
||||||
|
|||||||
@@ -255,6 +255,8 @@ class Realm(models.Model):
|
|||||||
bot_creation_policy = models.PositiveSmallIntegerField(default=BOT_CREATION_EVERYONE) # type: int
|
bot_creation_policy = models.PositiveSmallIntegerField(default=BOT_CREATION_EVERYONE) # type: int
|
||||||
|
|
||||||
# See upload_quota_bytes; don't interpret upload_quota_gb directly.
|
# See upload_quota_bytes; don't interpret upload_quota_gb directly.
|
||||||
|
UPLOAD_QUOTA_LIMITED = 5
|
||||||
|
UPLOAD_QUOTA_STANDARD = 50
|
||||||
upload_quota_gb = models.IntegerField(null=True) # type: Optional[int]
|
upload_quota_gb = models.IntegerField(null=True) # type: Optional[int]
|
||||||
|
|
||||||
video_chat_provider = models.CharField(default=u"Jitsi", max_length=MAX_VIDEO_CHAT_PROVIDER_LENGTH)
|
video_chat_provider = models.CharField(default=u"Jitsi", max_length=MAX_VIDEO_CHAT_PROVIDER_LENGTH)
|
||||||
|
|||||||
@@ -482,32 +482,38 @@ class RealmTest(ZulipTestCase):
|
|||||||
self.assertEqual(do_create_realm('hosted', 'hosted').plan_type, Realm.LIMITED)
|
self.assertEqual(do_create_realm('hosted', 'hosted').plan_type, Realm.LIMITED)
|
||||||
self.assertEqual(get_realm("hosted").max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
|
self.assertEqual(get_realm("hosted").max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
|
||||||
self.assertEqual(get_realm("hosted").message_visibility_limit, Realm.MESSAGE_VISIBILITY_LIMITED)
|
self.assertEqual(get_realm("hosted").message_visibility_limit, Realm.MESSAGE_VISIBILITY_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.SELF_HOSTED)
|
||||||
self.assertEqual(get_realm('onpremise').max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
|
self.assertEqual(get_realm('onpremise').max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
|
||||||
self.assertEqual(get_realm('onpremise').message_visibility_limit, None)
|
self.assertEqual(get_realm('onpremise').message_visibility_limit, None)
|
||||||
|
self.assertEqual(get_realm("onpremise").upload_quota_gb, None)
|
||||||
|
|
||||||
def test_change_plan_type(self) -> None:
|
def test_change_plan_type(self) -> None:
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
self.assertEqual(realm.plan_type, Realm.SELF_HOSTED)
|
self.assertEqual(realm.plan_type, Realm.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)
|
||||||
|
|
||||||
do_change_plan_type(realm, Realm.STANDARD)
|
do_change_plan_type(realm, Realm.STANDARD)
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
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)
|
||||||
|
|
||||||
do_change_plan_type(realm, Realm.LIMITED)
|
do_change_plan_type(realm, Realm.LIMITED)
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
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)
|
||||||
|
|
||||||
do_change_plan_type(realm, Realm.STANDARD_FREE)
|
do_change_plan_type(realm, Realm.STANDARD_FREE)
|
||||||
realm = get_realm('zulip')
|
realm = get_realm('zulip')
|
||||||
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)
|
||||||
|
|
||||||
class RealmAPITest(ZulipTestCase):
|
class RealmAPITest(ZulipTestCase):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user