mirror of
https://github.com/zulip/zulip.git
synced 2025-11-15 11:22:04 +00:00
exceptions: Add new error class to be used for invalid parameter values.
This would help us in avoiding adding translation everytime we use this error for a new pair of parameters.
This commit is contained in:
@@ -702,3 +702,16 @@ class SystemGroupRequiredError(JsonableError):
|
|||||||
@override
|
@override
|
||||||
def msg_format() -> str:
|
def msg_format() -> str:
|
||||||
return _("'{setting_name}' must be a system user group.")
|
return _("'{setting_name}' must be a system user group.")
|
||||||
|
|
||||||
|
|
||||||
|
class IncompatibleParameterValuesError(JsonableError):
|
||||||
|
data_fields = ["first_parameter", "second_parameter"]
|
||||||
|
|
||||||
|
def __init__(self, first_parameter: str, second_parameter: str) -> None:
|
||||||
|
self.first_parameter = first_parameter
|
||||||
|
self.second_parameter = second_parameter
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@override
|
||||||
|
def msg_format() -> str:
|
||||||
|
return _("Incompatible values for '{first_parameter}' and '{second_parameter}'.")
|
||||||
|
|||||||
@@ -2010,7 +2010,7 @@ class RealmAPITest(ZulipTestCase):
|
|||||||
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_font_size_px' settings.",
|
"Incompatible values for 'dense_mode' and 'web_font_size_px'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {"web_font_size_px": 16, "dense_mode": orjson.dumps(False).decode()}
|
data = {"web_font_size_px": 16, "dense_mode": orjson.dumps(False).decode()}
|
||||||
@@ -2048,7 +2048,7 @@ class RealmAPITest(ZulipTestCase):
|
|||||||
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_line_height_percent' settings.",
|
"Incompatible values for 'dense_mode' and 'web_line_height_percent'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {"web_line_height_percent": 140, "dense_mode": orjson.dumps(False).decode()}
|
data = {"web_line_height_percent": 140, "dense_mode": orjson.dumps(False).decode()}
|
||||||
@@ -2079,14 +2079,14 @@ class RealmAPITest(ZulipTestCase):
|
|||||||
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_font_size_px' settings.",
|
"Incompatible values for 'dense_mode' and 'web_font_size_px'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {"dense_mode": orjson.dumps(True).decode(), "web_line_height_percent": 140}
|
data = {"dense_mode": orjson.dumps(True).decode(), "web_line_height_percent": 140}
|
||||||
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_line_height_percent' settings.",
|
"Incompatible values for 'dense_mode' and 'web_line_height_percent'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
|
|||||||
@@ -518,7 +518,7 @@ class ChangeSettingsTest(ZulipTestCase):
|
|||||||
result = self.client_patch("/json/settings", data)
|
result = self.client_patch("/json/settings", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_font_size_px' settings.",
|
"Incompatible values for 'dense_mode' and 'web_font_size_px'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {"web_font_size_px": 16, "dense_mode": orjson.dumps(False).decode()}
|
data = {"web_font_size_px": 16, "dense_mode": orjson.dumps(False).decode()}
|
||||||
@@ -556,7 +556,7 @@ class ChangeSettingsTest(ZulipTestCase):
|
|||||||
result = self.client_patch("/json/settings", data)
|
result = self.client_patch("/json/settings", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_line_height_percent' settings.",
|
"Incompatible values for 'dense_mode' and 'web_line_height_percent'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {"web_line_height_percent": 140, "dense_mode": orjson.dumps(False).decode()}
|
data = {"web_line_height_percent": 140, "dense_mode": orjson.dumps(False).decode()}
|
||||||
@@ -587,14 +587,14 @@ class ChangeSettingsTest(ZulipTestCase):
|
|||||||
result = self.client_patch("/json/settings", data)
|
result = self.client_patch("/json/settings", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_font_size_px' settings.",
|
"Incompatible values for 'dense_mode' and 'web_font_size_px'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {"dense_mode": orjson.dumps(True).decode(), "web_line_height_percent": 140}
|
data = {"dense_mode": orjson.dumps(True).decode(), "web_line_height_percent": 140}
|
||||||
result = self.client_patch("/json/settings", data)
|
result = self.client_patch("/json/settings", data)
|
||||||
self.assert_json_error(
|
self.assert_json_error(
|
||||||
result,
|
result,
|
||||||
"Incompatible values for 'dense_mode' and 'web_line_height_percent' settings.",
|
"Incompatible values for 'dense_mode' and 'web_line_height_percent'.",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
|
|||||||
@@ -37,7 +37,12 @@ from zerver.lib.email_validation import (
|
|||||||
validate_email_is_valid,
|
validate_email_is_valid,
|
||||||
validate_email_not_already_in_realm,
|
validate_email_not_already_in_realm,
|
||||||
)
|
)
|
||||||
from zerver.lib.exceptions import JsonableError, RateLimitedError, UserDeactivatedError
|
from zerver.lib.exceptions import (
|
||||||
|
IncompatibleParameterValuesError,
|
||||||
|
JsonableError,
|
||||||
|
RateLimitedError,
|
||||||
|
UserDeactivatedError,
|
||||||
|
)
|
||||||
from zerver.lib.i18n import get_available_language_codes
|
from zerver.lib.i18n import get_available_language_codes
|
||||||
from zerver.lib.rate_limiter import RateLimitedUser
|
from zerver.lib.rate_limiter import RateLimitedUser
|
||||||
from zerver.lib.request import REQ, has_request_variables
|
from zerver.lib.request import REQ, has_request_variables
|
||||||
@@ -210,14 +215,10 @@ def check_information_density_setting_values(
|
|||||||
|
|
||||||
if dense_mode:
|
if dense_mode:
|
||||||
if web_font_size_px != UserBaseSettings.WEB_FONT_SIZE_PX_COMPACT:
|
if web_font_size_px != UserBaseSettings.WEB_FONT_SIZE_PX_COMPACT:
|
||||||
raise JsonableError(
|
raise IncompatibleParameterValuesError("dense_mode", "web_font_size_px")
|
||||||
_("Incompatible values for 'dense_mode' and 'web_font_size_px' settings.")
|
|
||||||
)
|
|
||||||
|
|
||||||
if web_line_height_percent != UserBaseSettings.WEB_LINE_HEIGHT_PERCENT_COMPACT:
|
if web_line_height_percent != UserBaseSettings.WEB_LINE_HEIGHT_PERCENT_COMPACT:
|
||||||
raise JsonableError(
|
raise IncompatibleParameterValuesError("dense_mode", "web_line_height_percent")
|
||||||
_("Incompatible values for 'dense_mode' and 'web_line_height_percent' settings.")
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@human_users_only
|
@human_users_only
|
||||||
|
|||||||
Reference in New Issue
Block a user