mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
This avoids an import loop in the next commit, and better matches our usual code structure.
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
from typing import List, Text
|
|
|
|
from django.utils.translation import ugettext as _
|
|
|
|
from zerver.lib.request import JsonableError
|
|
from zerver.models import UserProfile, Service, Realm, \
|
|
get_user_profile_by_id
|
|
|
|
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!"))
|
|
if len(full_name) < UserProfile.MIN_NAME_LENGTH:
|
|
raise JsonableError(_("Name too short!"))
|
|
if list(set(full_name).intersection(UserProfile.NAME_INVALID_CHARS)):
|
|
raise JsonableError(_("Invalid characters in name!"))
|
|
return full_name
|
|
|
|
def check_short_name(short_name_raw):
|
|
# type: (Text) -> Text
|
|
short_name = short_name_raw.strip()
|
|
if len(short_name) == 0:
|
|
raise JsonableError(_("Bad name or username"))
|
|
return short_name
|
|
|
|
def check_valid_bot_type(bot_type):
|
|
# type: (int) -> None
|
|
if bot_type not in UserProfile.ALLOWED_BOT_TYPES:
|
|
raise JsonableError(_('Invalid bot type'))
|
|
|
|
def check_valid_interface_type(interface_type):
|
|
# type: (int) -> None
|
|
if interface_type not in Service.ALLOWED_INTERFACE_TYPES:
|
|
raise JsonableError(_('Invalid interface type'))
|
|
|
|
def user_ids_to_users(user_ids: List[int], realm: Realm) -> List[UserProfile]:
|
|
# TODO: Change this to do a single bulk query with
|
|
# generic_bulk_cached_fetch; it'll be faster.
|
|
#
|
|
# TODO: Consider adding a flag to control whether deactivated
|
|
# users should be included.
|
|
user_profiles = []
|
|
for user_id in user_ids:
|
|
try:
|
|
user_profile = get_user_profile_by_id(user_id)
|
|
except UserProfile.DoesNotExist:
|
|
raise JsonableError(_("Invalid user ID: %s" % (user_id,)))
|
|
if user_profile.realm != realm:
|
|
raise JsonableError(_("Invalid user ID: %s" % (user_id,)))
|
|
user_profiles.append(user_profile)
|
|
return user_profiles
|