mirror of
https://github.com/zulip/zulip.git
synced 2025-11-07 15:33:30 +00:00
backend: Allow to change UserProfile's emojiset field via api.
This commit is contained in:
committed by
Tim Abbott
parent
fb3fda031d
commit
07081196f4
@@ -151,6 +151,7 @@ def fetch_initial_state_data(user_profile, event_types, queue_id,
|
||||
state['twenty_four_hour_time'] = user_profile.twenty_four_hour_time
|
||||
state['left_side_userlist'] = user_profile.left_side_userlist
|
||||
state['emoji_alt_code'] = user_profile.emoji_alt_code
|
||||
state['emojiset'] = user_profile.emojiset
|
||||
state['timezone'] = user_profile.timezone
|
||||
state['default_language'] = user_profile.default_language
|
||||
|
||||
@@ -388,6 +389,8 @@ def apply_event(state, event, user_profile, include_subscribers):
|
||||
state['left_side_userlist'] = event["setting"]
|
||||
if event['setting_name'] == 'emoji_alt_code':
|
||||
state['emoji_alt_code'] = event["setting"]
|
||||
if event['setting_name'] == 'emojiset':
|
||||
state['emojiset'] = event["setting"]
|
||||
if event['setting_name'] == 'default_language':
|
||||
state['default_language'] = event["setting"]
|
||||
if event['setting_name'] == 'timezone':
|
||||
|
||||
@@ -957,6 +957,10 @@ class EventsRegisterTest(ZulipTestCase):
|
||||
# type: () -> None
|
||||
self.do_set_user_display_settings_test("emoji_alt_code", [True, False])
|
||||
|
||||
def test_change_emojiset(self):
|
||||
# type: () -> None
|
||||
self.do_set_user_display_settings_test("emojiset", [u'apple', u'twitter'])
|
||||
|
||||
def test_change_default_language(self):
|
||||
# type: () -> None
|
||||
self.do_set_user_display_settings_test("default_language", [u'de', u'es', u'en'])
|
||||
|
||||
@@ -58,6 +58,8 @@ class HomeTest(ZulipTestCase):
|
||||
"domains",
|
||||
"email",
|
||||
"emoji_alt_code",
|
||||
"emojiset",
|
||||
"emojiset_choices",
|
||||
"enable_digest_emails",
|
||||
"enable_offline_email_notifications",
|
||||
"enable_offline_push_notifications",
|
||||
|
||||
@@ -239,6 +239,29 @@ class ChangeSettingsTest(ZulipTestCase):
|
||||
user_profile = get_user_profile_by_email(email)
|
||||
self.assertNotEqual(user_profile.timezone, invalid_timezone)
|
||||
|
||||
def test_change_emojiset(self):
|
||||
# type: () -> None
|
||||
"""
|
||||
Test changing the emojiset.
|
||||
"""
|
||||
email = "hamlet@zulip.com"
|
||||
self.login(email)
|
||||
emojiset = 'apple'
|
||||
data = dict(emojiset=ujson.dumps(emojiset))
|
||||
result = self.client_patch("/json/settings/display", data)
|
||||
self.assert_json_success(result)
|
||||
user_profile = get_user_profile_by_email(email)
|
||||
self.assertEqual(user_profile.emojiset, emojiset)
|
||||
|
||||
# Test to make sure invalid emojisets are not accepted
|
||||
# and saved in the db.
|
||||
invalid_emojiset = "invalid_emojiset"
|
||||
data = dict(emojiset=ujson.dumps(invalid_emojiset))
|
||||
result = self.client_patch("/json/settings/display", data)
|
||||
self.assert_json_error(result, "Invalid emojiset '%s'" % (invalid_emojiset,))
|
||||
user_profile = get_user_profile_by_email(email)
|
||||
self.assertNotEqual(user_profile.emojiset, invalid_emojiset)
|
||||
|
||||
class UserChangesTest(ZulipTestCase):
|
||||
def test_update_api_key(self):
|
||||
# type: () -> None
|
||||
|
||||
@@ -234,6 +234,8 @@ def home_real(request):
|
||||
avatar_url_medium = avatar_url(user_profile, medium=True),
|
||||
avatar_source = user_profile.avatar_source,
|
||||
timezone = user_profile.timezone,
|
||||
emojiset = user_profile.emojiset,
|
||||
emojiset_choices = user_profile.emojiset_choices(),
|
||||
|
||||
# Stream message notification settings:
|
||||
stream_desktop_notifications_enabled = user_profile.enable_stream_desktop_notifications,
|
||||
|
||||
@@ -161,8 +161,9 @@ def update_display_settings_backend(request, user_profile,
|
||||
default_language=REQ(validator=check_string, default=None),
|
||||
left_side_userlist=REQ(validator=check_bool, default=None),
|
||||
emoji_alt_code=REQ(validator=check_bool, default=None),
|
||||
emojiset=REQ(validator=check_string, default=None),
|
||||
timezone=REQ(validator=check_string, default=None)):
|
||||
# type: (HttpRequest, UserProfile, Optional[bool], Optional[str], Optional[bool], Optional[bool], Optional[Text]) -> HttpResponse
|
||||
# type: (HttpRequest, UserProfile, Optional[bool], Optional[str], Optional[bool], Optional[bool], Optional[Text], Optional[Text]) -> HttpResponse
|
||||
if (default_language is not None and
|
||||
default_language not in get_available_language_codes()):
|
||||
raise JsonableError(_("Invalid language '%s'" % (default_language,)))
|
||||
@@ -171,6 +172,10 @@ def update_display_settings_backend(request, user_profile,
|
||||
timezone not in get_all_timezones()):
|
||||
raise JsonableError(_("Invalid timezone '%s'" % (timezone,)))
|
||||
|
||||
if (emojiset is not None and
|
||||
emojiset not in UserProfile.emojiset_choices()):
|
||||
raise JsonableError(_("Invalid emojiset '%s'" % (emojiset,)))
|
||||
|
||||
result = {} # type: Dict[str, Any]
|
||||
if (default_language is not None and
|
||||
user_profile.default_language != default_language):
|
||||
@@ -192,6 +197,10 @@ def update_display_settings_backend(request, user_profile,
|
||||
do_set_user_display_setting(user_profile, "emoji_alt_code", emoji_alt_code)
|
||||
result['emoji_alt_code'] = emoji_alt_code
|
||||
|
||||
elif (emojiset is not None and user_profile.emojiset != emojiset):
|
||||
do_set_user_display_setting(user_profile, "emojiset", emojiset)
|
||||
result['emojiset'] = emojiset
|
||||
|
||||
elif (timezone is not None and
|
||||
user_profile.timezone != timezone):
|
||||
do_set_user_display_setting(user_profile, "timezone", timezone)
|
||||
|
||||
Reference in New Issue
Block a user