{ "info": { "author": "Alexis C\u00f4t\u00e9", "author_email": "alexiscote19@hotmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# orchester\n\n[![PyPI version](https://badge.fury.io/py/orchester.svg)](https://badge.fury.io/py/orchester)![PyPI downloads](https://img.shields.io/pypi/dm/orchester.svg)\n\nThis is a python set of tools to easily manage membership of users to your preferred cloud services.\n\n- [orchester](#orchester)\n - [Getting started](#getting-started)\n - [CLI](#cli)\n - [Connectors](#connectors)\n - [Trello](#trello)\n - [Github](#github)\n - [Slack](#slack)\n - [Google Drive](#google-drive)\n - [API](#api)\n - [Contributing](#contributing)\n\n## Getting started\n\nInstall the package with `pip install orchester`\n\nIf you want on using the command line interface, you must define some configurations.\n\n## Configuration\n\nConfiguration is done through a `.orchester.json` configuration file. \nYou can see a documented template here: [.orchester-doc.json](.orchester-doc.json)\nThe values labeled by `[CLI]` are only required for the CLI.\n\n>**Note**: An empty template is available here: [.orchester.json](.orchester-empty.json)\n\n\nThe application will attempt to load from this following order:\n\n- A specific path defined in the **ORCHESTER_CONFIG_PATH** environment variable.\n- In the current working directory\n- In the user folder (home)\n\n## CLI\n\nOrchester is distributed with a command line tool. Once installed, you can call it with `orchest --help`\n\nThe following commands are available:\n\n- `orchest -c CONNECTOR_TYPE check IDENTIFIER`: Check if the user is registered to the organization\n- `orchest -c CONNECTOR_TYPE add IDENTIFIER` Add a user to the organization\n- `orchest -c CONNECTOR_TYPE rm IDENTIFIER`: Remove a user from the organization\n- `orchest generate CONNECTOR_TYPE`: Generates the OAuth credentials for connector.\n\nIf you want to omit the `CONNECTOR_TYPE` for each command, you can set a default connector in your configuration file:\n\n> \"default_connector\": \"trello\"\n\nThe connector_type must be **CONNECTOR** name of a valid connector. The connectors are described in the next section.\n\n\n## Connectors\n\n### Trello\n\n**CONNECTOR**: trello\n\n**IDENTIFIER**: Use the trello username\n\n---\n\n1. Get your API token and secret from https://trello.com/app-key (Look for the Api Key and OAuth secret)\n2. Add the Api Key and OAuth secret in the `.orchester.json` configuration file in **api_key** and **api_secret**.\n3. Run `orchest generate trello` script to get the credentials\n4. Set the OAuth token and OAuth secret in the configuration file in **token** and **token_secret**\n\n---\n\n### Github\n\n**CONNECTOR**: github\n\n**IDENTIFIER**: Use the github username\n\n---\n\nTo use the Github service, you need an Personal Token.\n\nGo on Github under `Settings > Developer settings > Personal access tokens`\n\nThen, create a new token and save it in your configuration file at **token**.\n\n\n---\n\n### Slack\n\n**CONNECTOR**: slack\n\n**IDENTIFIER**: Use the slack email\n\n---\n\nTo get started with slack, you first need to get a legacy token and a OAuth token.\n\n**Legacy token**\n\nSimply go to the following url and issue a new legacy token: https://api.slack.com/custom-integrations/legacy-tokens\n\nYou can then add the legacy token in **legacy_token**.\n\n>**Note**: You'll need to be connected to issue a token.\n\n**OAuth token**\n\nBefore you can actually generate an OAuth token, you'll need to have a Slack application. \n\n> **How to create an app?**: Go to https://api.slack.com/apps and click on *Create New App*
\nYou must add the following permission scopes: **users:read** and **users:read.email**
\nYou will also need to set the following Redirect URI: http://localhost:8888/finish_auth\n\nYou can then store the client id and client secret in **client_id** and **client_secret**\n\nYou are now all setup to generate the final OAuth token.\n\n1. Run `orchest generate slack`\n2. Go to: `http://localhost:8888/begin_auth`\n3. Click on \"Add to slack\"\n4. Click Authorize\n5. It should show a OAuth token. Save that in the configuration file at **token** \n\n\n>**Warnings**: Free Slack users can't use the api to remove a user.\n\n--- \n\n### Google Drive\n\n**IDENTIFIER**: Use the google email\n\n**CONNECTOR**: g_drive\n\n---\n\nBefore you begin, you'll need a `google_drive_credentials.json` file at the root of this folder.\n\nYou can get it by creating credentials in your Google Console API\n\n**Tutorial**: Tutorials coming from: https://developers.google.com/drive/api/v3/quickstart/python\n\nOnce you have the `credentials.json` file, you need to define the **credential_path** and **token_path**.\n\nAfter that, you can run `orchest generate g_drive` to create the `google_drive_token.json`.\n\n## API\n\nThe API is pretty straight forward. Each connectors inherit from `orchester.connectors.AbstractBaseConnector`\n\nIf you want to use all the connectors at one time, you can use the `orchester.ConnectorManager`\n\nThe manager instantiate all the connectors and let you easily interact with the connector one at a time.\n\n\nHere's an example to use the github connector:\n```python\nfrom orchester.connectors import GithubConnector, RequestFailedError\n\nconnector = GithubConnector(access_token=\"my token...\",organization_id='myOrg')\n\ntry:\n user_exist = connector.is_registered_to_group('popojargo')\n print('User is registered to myOrg')\nexcept RequestFailedError:\n print('The request failed.')\n\n\ntry:\n connector.remove_from_group('popojargo')\n print('User removed to myOrg')\n\nexcept RequestFailedError:\n print('The request failed.')\n\n\ntry:\n user_exist = connector.add_to_group('popojargo')\n print('User added to myOrg')\n\nexcept RequestFailedError:\n print('The request failed.')\n```\n\n## Contributing\n\nFor developer documentation, see [README-DEV.md](README-DEV.md)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/popojargo/orchester", "keywords": "orchester auth trello github drive google groups slack manage cli", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "orchester", "package_url": "https://pypi.org/project/orchester/", "platform": "", "project_url": "https://pypi.org/project/orchester/", "project_urls": { "Homepage": "https://github.com/popojargo/orchester" }, "release_url": "https://pypi.org/project/orchester/0.0.4/", "requires_dist": [ "Flask (<2,>=1.0.2)", "google-api-python-client (<2,>=1.7.7)", "oauth2client (<5,>=4.1.3)", "py-trello (<1,>=0.14.0)", "PyGithub (<2,>=1.43.4)", "slackclient (<2,>=1.3.0)" ], "requires_python": "~=3.5", "summary": "Orchester allows you to easily add/remove use to your favorite platforms.", "version": "0.0.4" }, "last_serial": 5810999, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "732053c06ad8ffed82791bb6fdb064af", "sha256": "a3aff989639351dad1303c2091839ec94af58db607d90278b753db407aad25b7" }, "downloads": -1, "filename": "orchester-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "732053c06ad8ffed82791bb6fdb064af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 13698, "upload_time": "2019-02-07T19:23:26", "url": "https://files.pythonhosted.org/packages/e2/fc/c2d9f5aaf84566fd9495efc998c52852afd59f485109cfa7cb6abec157af/orchester-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9cd28d3070dbc2d63e615422b704574f", "sha256": "bd32513e2d6345206c7fc792237b8570c7f47c6bfab84bdacbaa1ee83fac7628" }, "downloads": -1, "filename": "orchester-0.0.1.tar.gz", "has_sig": false, "md5_digest": "9cd28d3070dbc2d63e615422b704574f", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 8573, "upload_time": "2019-02-07T19:23:28", "url": "https://files.pythonhosted.org/packages/aa/5e/609afed6a528dab8ac687c290049cbd50c183c505e756c82e118b6c3d1f8/orchester-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "d39db94a799516c2729c7c79744c7ccc", "sha256": "30af066c7acf3994a0fc8651ff6856217ce70e31a7ba665584349251e10d460d" }, "downloads": -1, "filename": "orchester-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d39db94a799516c2729c7c79744c7ccc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 14281, "upload_time": "2019-09-10T20:08:34", "url": "https://files.pythonhosted.org/packages/03/37/11a786cdc7b8e00abef5232ec1e3bc0610ff44fa340fc0fe37d4b969a0bb/orchester-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b36bba7080f33c72b893914b2350fc42", "sha256": "fc934fd59ff4cdbb63850175e17d9b284e9209d4cb7427d7d5833ffdc2c76956" }, "downloads": -1, "filename": "orchester-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b36bba7080f33c72b893914b2350fc42", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 9158, "upload_time": "2019-09-10T20:08:39", "url": "https://files.pythonhosted.org/packages/b0/82/714c1f3e25d4d1cdb052d1d870b87cdbb4f7558f8e80f6797591fc6a1d52/orchester-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "313749c40b0edcfbcef842778768a8bd", "sha256": "e6dcd663baf39d6e65b8714c638a8d7af6c32b4d2f63cd900ebc54bb8da5c952" }, "downloads": -1, "filename": "orchester-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "313749c40b0edcfbcef842778768a8bd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 14281, "upload_time": "2019-09-10T20:08:37", "url": "https://files.pythonhosted.org/packages/a8/21/fc5bf7cfab1206f4e947bc8c88f4b1db15bb8e31b986837d308f8cfb08d9/orchester-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e09a390409e1873275c4a6cc786cd9c", "sha256": "5cb140662e73c0b771d227fe6cbc7d5e3a821c5173839b50bc2748d7a080fde2" }, "downloads": -1, "filename": "orchester-0.0.4.tar.gz", "has_sig": false, "md5_digest": "8e09a390409e1873275c4a6cc786cd9c", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 9153, "upload_time": "2019-09-10T20:08:40", "url": "https://files.pythonhosted.org/packages/72/61/92ecf7449625e4af154aa206c7e41fd5e5ef3ec33f07a215eeea22ae592d/orchester-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "313749c40b0edcfbcef842778768a8bd", "sha256": "e6dcd663baf39d6e65b8714c638a8d7af6c32b4d2f63cd900ebc54bb8da5c952" }, "downloads": -1, "filename": "orchester-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "313749c40b0edcfbcef842778768a8bd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.5", "size": 14281, "upload_time": "2019-09-10T20:08:37", "url": "https://files.pythonhosted.org/packages/a8/21/fc5bf7cfab1206f4e947bc8c88f4b1db15bb8e31b986837d308f8cfb08d9/orchester-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e09a390409e1873275c4a6cc786cd9c", "sha256": "5cb140662e73c0b771d227fe6cbc7d5e3a821c5173839b50bc2748d7a080fde2" }, "downloads": -1, "filename": "orchester-0.0.4.tar.gz", "has_sig": false, "md5_digest": "8e09a390409e1873275c4a6cc786cd9c", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.5", "size": 9153, "upload_time": "2019-09-10T20:08:40", "url": "https://files.pythonhosted.org/packages/72/61/92ecf7449625e4af154aa206c7e41fd5e5ef3ec33f07a215eeea22ae592d/orchester-0.0.4.tar.gz" } ] }