slack import: Map Slack guest users to Zulip guests.

Slack's Single-User Guest and Multi-User Guest users should be
imported as Zulip guests during data import.

Fixes #13255.
This commit is contained in:
Tlazypanda
2019-10-31 17:48:49 +05:30
committed by Tim Abbott
parent 7d71fc9fb3
commit 6945ced76f
3 changed files with 73 additions and 8 deletions

View File

@@ -164,6 +164,8 @@ def users_to_zerver_userprofile(slack_data_dir: str, users: List[ZerverFieldsT],
role = UserProfile.ROLE_MEMBER
if get_admin(user):
role = UserProfile.ROLE_REALM_ADMINISTRATOR
if get_guest(user):
role = UserProfile.ROLE_GUEST
timezone = get_user_timezone(user)
if slack_user_id in slack_user_id_to_custom_profile_fields:
@@ -308,6 +310,16 @@ def get_admin(user: ZerverFieldsT) -> bool:
return True
return False
def get_guest(user: ZerverFieldsT) -> bool:
restricted_user = user.get('is_restricted', False)
ultra_restricted_user = user.get('is_ultra_restricted', False)
# Slack's Single channel and multi channel guests both have
# is_restricted set to True. So assuming Slack doesn't change their
# data model, it would also be correct to just check whether
# is_restricted is set to True.
return restricted_user or ultra_restricted_user
def get_user_timezone(user: ZerverFieldsT) -> str:
_default_timezone = "America/New_York"
timezone = user.get("tz", _default_timezone)