def build_customprofile_field(customprofile_field: List[ZerverFieldsT], fields: ZerverFieldsT, customprofilefield_id: int, realm_id: int, custom_field_map: ZerverFieldsT) -> Tuple[ZerverFieldsT, int]: # The name of the custom profile field is not provided in the slack data # Hash keys of the fields are provided # Reference: https://api.slack.com/methods/users.profile.set for field, value in fields.items(): if field not in custom_field_map: slack_custom_fields = ['phone', 'skype'] if field in slack_custom_fields: field_name = field else: field_name = ("slack custom field %s" % str(customprofilefield_id + 1)) customprofilefield = CustomProfileField( id=customprofilefield_id, name=field_name, field_type=1 # For now this is defaulted to 'SHORT_TEXT' # Processing is done in the function 'process_customprofilefields' ) customprofilefield_dict = model_to_dict(customprofilefield, exclude=['realm']) customprofilefield_dict['realm'] = realm_id custom_field_map[field] = customprofilefield_id customprofilefield_id += 1 customprofile_field.append(customprofilefield_dict) return custom_field_map, customprofilefield_id
def build_customprofile_field( customprofile_field: List[ZerverFieldsT], fields: ZerverFieldsT, custom_profile_field_id: int, realm_id: int, slack_custom_field_name_to_zulip_custom_field_id: ZerverFieldsT, ) -> Tuple[ZerverFieldsT, int]: # The name of the custom profile field is not provided in the Slack data # Hash keys of the fields are provided # Reference: https://api.slack.com/methods/users.profile.set for field, value in fields.items(): if field not in slack_custom_field_name_to_zulip_custom_field_id: slack_custom_fields = ["phone", "skype"] if field in slack_custom_fields: field_name = field else: field_name = f"Slack custom field {str(custom_profile_field_id + 1)}" customprofilefield = CustomProfileField( id=custom_profile_field_id, name=field_name, field_type=1, # For now this is defaulted to 'SHORT_TEXT' # Processing is done in the function 'process_customprofilefields' ) customprofilefield_dict = model_to_dict(customprofilefield, exclude=["realm"]) customprofilefield_dict["realm"] = realm_id slack_custom_field_name_to_zulip_custom_field_id[field] = custom_profile_field_id custom_profile_field_id += 1 customprofile_field.append(customprofilefield_dict) return slack_custom_field_name_to_zulip_custom_field_id, custom_profile_field_id
def build_customprofilefields_values( custom_field_map: ZerverFieldsT, fields: ZerverFieldsT, user_id: int, custom_field_id: int, custom_field_values: List[ZerverFieldsT]) -> int: for field, value in fields.items(): custom_field_value = dict(id=custom_field_id, user_profile=user_id, field=custom_field_map[field], value=value['value']) custom_field_values.append(custom_field_value) custom_field_id += 1 return custom_field_id
def build_customprofilefields_values( custom_field_map: ZerverFieldsT, fields: ZerverFieldsT, user_id: int, custom_field_id: int, custom_field_values: List[ZerverFieldsT]) -> int: for field, value in fields.items(): custom_field_value = CustomProfileFieldValue(id=custom_field_id, value=value['value']) custom_field_value_dict = model_to_dict( custom_field_value, exclude=['user_profile', 'field']) custom_field_value_dict['user_profile'] = user_id custom_field_value_dict['field'] = custom_field_map[field] custom_field_values.append(custom_field_value_dict) custom_field_id += 1 return custom_field_id
def build_customprofilefields_values(custom_field_map: ZerverFieldsT, fields: ZerverFieldsT, user_id: int, custom_field_id: int, custom_field_values: List[ZerverFieldsT]) -> int: for field, value in fields.items(): custom_field_value = CustomProfileFieldValue( id=custom_field_id, value=value['value']) custom_field_value_dict = model_to_dict(custom_field_value, exclude=['user_profile', 'field']) custom_field_value_dict['user_profile'] = user_id custom_field_value_dict['field'] = custom_field_map[field] custom_field_values.append(custom_field_value_dict) custom_field_id += 1 return custom_field_id
def build_customprofilefields_values(slack_custom_field_name_to_zulip_custom_field_id: ZerverFieldsT, fields: ZerverFieldsT, user_id: int, custom_field_id: int, custom_field_values: List[ZerverFieldsT]) -> int: for field, value in fields.items(): if value['value'] == "": continue custom_field_value = CustomProfileFieldValue( id=custom_field_id, value=value['value']) custom_field_value_dict = model_to_dict(custom_field_value, exclude=['user_profile', 'field']) custom_field_value_dict['user_profile'] = user_id custom_field_value_dict['field'] = slack_custom_field_name_to_zulip_custom_field_id[field] custom_field_values.append(custom_field_value_dict) custom_field_id += 1 return custom_field_id
def build_realmemoji( custom_emoji_list: ZerverFieldsT, realm_id: int) -> Tuple[List[ZerverFieldsT], ZerverFieldsT]: zerver_realmemoji = [] emoji_url_map = {} emoji_id = 0 for emoji_name, url in custom_emoji_list.items(): if 'emoji.slack-edge.com' in url: # Some of the emojis we get from the api have invalid links # this is to prevent errors related to them realmemoji = dict(name=emoji_name, id=emoji_id, author=None, realm=realm_id, file_name=os.path.basename(url), deactivated=False) emoji_url_map[emoji_name] = url zerver_realmemoji.append(realmemoji) emoji_id += 1 return zerver_realmemoji, emoji_url_map
def build_realmemoji( custom_emoji_list: ZerverFieldsT, realm_id: int ) -> Tuple[List[ZerverFieldsT], ZerverFieldsT]: zerver_realmemoji = [] emoji_url_map = {} emoji_id = 0 for emoji_name, url in custom_emoji_list.items(): if "emoji.slack-edge.com" in url: # Some of the emojis we get from the API have invalid links # this is to prevent errors related to them realmemoji = RealmEmoji( name=emoji_name, id=emoji_id, file_name=os.path.basename(url), deactivated=False ) realmemoji_dict = model_to_dict(realmemoji, exclude=["realm", "author"]) realmemoji_dict["author"] = None realmemoji_dict["realm"] = realm_id emoji_url_map[emoji_name] = url zerver_realmemoji.append(realmemoji_dict) emoji_id += 1 return zerver_realmemoji, emoji_url_map
def build_realmemoji(custom_emoji_list: ZerverFieldsT, realm_id: int) -> Tuple[List[ZerverFieldsT], ZerverFieldsT]: zerver_realmemoji = [] emoji_url_map = {} emoji_id = 0 for emoji_name, url in custom_emoji_list.items(): if 'emoji.slack-edge.com' in url: # Some of the emojis we get from the api have invalid links # this is to prevent errors related to them realmemoji = RealmEmoji( name=emoji_name, id=emoji_id, file_name=os.path.basename(url), deactivated=False) realmemoji_dict = model_to_dict(realmemoji, exclude=['realm', 'author']) realmemoji_dict['author'] = None realmemoji_dict['realm'] = realm_id emoji_url_map[emoji_name] = url zerver_realmemoji.append(realmemoji_dict) emoji_id += 1 return zerver_realmemoji, emoji_url_map