integrations: Remove slack import script.
This was migrated to the Zulip server project some time ago.
DELETE
zulip/integrations/slack/README.md
-# Slack Data Import Tool
-
-The slack import tool has been shifted to the Zulip server repository.
-The data can be converted from slack data format to zulip data format
-using the command `./manage.py convert_slack_data`.
-
-The procedure to use this would be:
-
-1. `./manage.py convert_slack_data <slack_zip_file> <realm_name> --output <output_dir>`.
-2. To import this converted data into a new Zulip instance, use
- `./manage.py import --destory-rebuild-database <output_dir>`.
-3. To import this converted data into an existing Zulip instance (with multiple realms)
- use `./manage.py import --import-into-nonempty <output_dir>`.

DELETE
zulip/integrations/slack/requirements.txt
-slacker>=0.9.60

DELETE
zulip/integrations/slack/zulip_slack.py
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-#
-# slacker is a dependency for this script.
-#
-
-from __future__ import absolute_import
-from __future__ import print_function
-
-import sys
-import string
-import random
-from six.moves import range
-from typing import List, Dict
-
-import zulip
-from slacker import Slacker, Response, Error as SlackError
-
-import zulip_slack_config as config
-
-
-client = zulip.Client(email=config.ZULIP_USER, api_key=config.ZULIP_API_KEY, site=config.ZULIP_SITE)
-
-
-class FromSlackImporter(object):
- def __init__(self, slack_token, get_archived_channels=True):
- # type: (str, bool) -> None
- self.slack = Slacker(slack_token)
- self.get_archived_channels = get_archived_channels
-
- self._check_slack_token()
-
- def get_slack_users_email(self):
- # type: () -> Dict[str, Dict[str, str]]
-
- r = self.slack.users.list()
- self._check_if_response_is_successful(r)
- results_dict = {}
- for user in r.body['members']:
- if user['profile'].get('email') and user.get('deleted') is False:
- results_dict[user['id']] = {'email': user['profile']['email'], 'name': user['profile']['real_name']}
- return results_dict
-
- def get_slack_public_channels_names(self):
- # type: () -> List[Dict[str, str]]
-
- r = self.slack.channels.list()
- self._check_if_response_is_successful(r)
- return [{'name': channel['name'], 'members': channel['members']} for channel in r.body['channels']]
-
- def get_slack_private_channels_names(self):
- # type: () -> List[str]
-
- r = self.slack.groups.list()
- self._check_if_response_is_successful(r)
- return [
- channel['name'] for channel in r.body['groups']
- if not channel['is_archived'] or self.get_archived_channels
- ]
-
- def _check_slack_token(self):
- # type: () -> None
- try:
- r = self.slack.api.test()
- self._check_if_response_is_successful(r)
- except SlackError as e:
- print(e)
- sys.exit(1)
- except Exception as e:
- print(e)
- sys.exit(1)
-
- def _check_if_response_is_successful(self, response):
- # type: (Response) -> None
- print(response)
- if not response.successful:
- print(response.error)
- sys.exit(1)
-
-def _generate_random_password(size=10):
- # type: (int) -> str
- return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(size))
-
-def get_and_add_users(slack_importer):
- # type: (Slacker) -> Dict[str, Dict[str, str]]
- users = slack_importer.get_slack_users_email()
- added_users = {}
- print('######### IMPORTING USERS STARTED #########\n')
- for user_id, user in users.items():
- r = client.create_user({
- 'email': user['email'],
- 'full_name': user['name'],
- 'short_name': user['name']
- })
- if not r.get('msg'):
- added_users[user_id] = user
- print(u"{} -> {}\nCreated\n".format(user['name'], user['email']))
- else:
- print(u"{} -> {}\n{}\n".format(user['name'], user['email'], r.get('msg')))
- print('######### IMPORTING USERS FINISHED #########\n')
- return added_users
-
-def create_streams_and_add_subscribers(slack_importer, added_users):
- # type: (Slacker, Dict[str, Dict[str, str]]) -> None
- channels_list = slack_importer.get_slack_public_channels_names()
- print('######### IMPORTING STREAMS STARTED #########\n')
- for stream in channels_list:
- subscribed_users = [added_users[member]['email'] for member in stream['members'] if member in added_users.keys()]
- if subscribed_users:
- r = client.add_subscriptions([{"name": stream['name']}], principals=subscribed_users)
- if not r.get('msg'):
- print(u"{} -> created\n".format(stream['name']))
- else:
- print(u"{} -> {}\n".format(stream['name'], r.get('msg')))
- else:
- print(u"{} -> wasn't created\nNo subscribers\n".format(stream['name']))
- print('######### IMPORTING STREAMS FINISHED #########\n')
-
-def main():
- # type: () -> None
- importer = FromSlackImporter(config.SLACK_TOKEN)
- added_users = get_and_add_users(importer)
- create_streams_and_add_subscribers(importer, added_users)
-
-if __name__ == '__main__':
- main()

integrations: Remove slack import script.

This was migrated to the Zulip server project some time ago.