2018-06-15 20:56:36 +02:00
|
|
|
from typing import Any, Dict
|
|
|
|
from django.utils.translation import ugettext as _
|
|
|
|
|
|
|
|
from zerver.models import UserProfile
|
|
|
|
from zerver.lib.actions import do_set_user_display_setting
|
|
|
|
from zerver.lib.exceptions import JsonableError
|
|
|
|
|
2018-06-20 20:46:33 +02:00
|
|
|
def process_zcommands(content: str, user_profile: UserProfile) -> Dict[str, Any]:
|
2018-06-21 19:23:35 +02:00
|
|
|
if not content.startswith('/'):
|
|
|
|
raise JsonableError(_('There should be a leading slash in the zcommand.'))
|
|
|
|
command = content[1:]
|
2018-06-15 20:56:36 +02:00
|
|
|
|
|
|
|
if command == 'ping':
|
|
|
|
ret = dict() # type: Dict[str, Any]
|
|
|
|
return ret
|
|
|
|
|
2017-08-11 01:59:01 +02:00
|
|
|
night_commands = ['night', 'dark']
|
|
|
|
day_commands = ['day', 'light']
|
|
|
|
|
|
|
|
if command in night_commands:
|
2018-06-15 20:56:36 +02:00
|
|
|
if user_profile.night_mode:
|
|
|
|
msg = 'You are still in night mode.'
|
|
|
|
else:
|
2018-08-09 02:43:50 +02:00
|
|
|
switch_command = day_commands[night_commands.index(command)]
|
|
|
|
msg = 'Changed to night mode! To revert night mode, type `/%s`.' % (switch_command,)
|
2018-06-15 20:56:36 +02:00
|
|
|
do_set_user_display_setting(user_profile, 'night_mode', True)
|
|
|
|
ret = dict(msg=msg)
|
|
|
|
return ret
|
|
|
|
|
2017-08-11 01:59:01 +02:00
|
|
|
if command in day_commands:
|
2018-06-15 20:56:36 +02:00
|
|
|
if user_profile.night_mode:
|
2018-08-09 02:43:50 +02:00
|
|
|
switch_command = night_commands[day_commands.index(command)]
|
|
|
|
msg = 'Changed to day mode! To revert day mode, type `/%s`.' % (switch_command,)
|
2018-06-15 20:56:36 +02:00
|
|
|
do_set_user_display_setting(user_profile, 'night_mode', False)
|
|
|
|
else:
|
|
|
|
msg = 'You are still in day mode.'
|
|
|
|
ret = dict(msg=msg)
|
|
|
|
return ret
|
|
|
|
|
|
|
|
raise JsonableError(_('No such command: %s') % (command,))
|