2017-02-08 04:39:55 +01:00
|
|
|
from __future__ import absolute_import
|
|
|
|
from typing import Text
|
|
|
|
|
|
|
|
from django.utils.translation import ugettext as _
|
|
|
|
|
|
|
|
from zerver.lib.actions import do_change_full_name
|
|
|
|
from zerver.lib.request import JsonableError
|
|
|
|
from zerver.models import UserProfile
|
|
|
|
|
2017-02-08 04:51:01 +01:00
|
|
|
def check_full_name(full_name_raw):
|
|
|
|
# type: (Text) -> Text
|
|
|
|
full_name = full_name_raw.strip()
|
|
|
|
if len(full_name) > UserProfile.MAX_NAME_LENGTH:
|
|
|
|
raise JsonableError(_("Name too long!"))
|
2017-05-12 04:21:49 +02:00
|
|
|
if len(full_name) < UserProfile.MIN_NAME_LENGTH:
|
|
|
|
raise JsonableError(_("Name too short!"))
|
2017-02-08 04:51:01 +01:00
|
|
|
if list(set(full_name).intersection(UserProfile.NAME_INVALID_CHARS)):
|
|
|
|
raise JsonableError(_("Invalid characters in name!"))
|
|
|
|
return full_name
|
|
|
|
|
|
|
|
def check_change_full_name(user_profile, full_name_raw):
|
2017-02-08 04:39:55 +01:00
|
|
|
# type: (UserProfile, Text) -> Text
|
|
|
|
"""Verifies that the user's proposed full name is valid. The caller
|
|
|
|
is responsible for checking check permissions. Returns the new
|
|
|
|
full name, which may differ from what was passed in (because this
|
|
|
|
function strips whitespace)."""
|
2017-02-08 04:51:01 +01:00
|
|
|
new_full_name = check_full_name(full_name_raw)
|
2017-02-08 04:39:55 +01:00
|
|
|
do_change_full_name(user_profile, new_full_name)
|
|
|
|
return new_full_name
|