{ "info": { "author": "Open FUN (France Universite Numerique)", "author_email": "fun.dev@fun-mooc.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Framework :: Django :: 1.8", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7" ], "description": "# Configurable LTI Consumer XBlock\n\nThis XBlock is built on top of [edX LTI consumer\nXblock](https://github.com/edx/xblock-lti-consumer) to ease its configuration by Instructors.\n\nHere are a few examples of what this module brings to Open edX:\n\n- Pre-configure LTI services that can be added in one-click from the `Advanced` component button,\n- Enforced configuration for some LTI Services by targetting a launch url pattern,\n- Enforced default configuration for all LTI Services for better control, security or ergonomy,\n- Platform-level LTI credentials configuration available to all courses.\n courses.\n\n\n## Installation\n\nThis package can be installed with `pip`:\n\n```bash\n$ pip install configurable_lti_consumer-xblock\n```\n\nEdx's [lti_consumer-xblock](https://github.com/edx/xblock-lti-consumer) is\nrequired as an extra dependency if you are willing to install or test this\nXBlock as a standalone package. You can install it separately with `pip`:\n\n```bash\n$ pip install git+https://github.com/edx/xblock-lti-consumer@v1.1.8#egg=lti-consumer-xblock\n```\n\nIf you plan to install it in a base Open edX installation, this dependency will\nalready be available, and thus you don't need to execute the above command.\n\n## Getting started\n\nFirst things first, if you plan to work on the project itself, you will need to\nclone this repository:\n\n```\n$ git clone git@github.com:openfun/xblock-configurable-lti-consumer.git\n```\n\nOnce the project has been cloned on your machine, you will need to build a\ncustom [edx-platform docker image](https://github.com/openfun/openedx-docker) that\nincludes the configurable LTI consumer XBlock and setup a development environment that\nincludes all required services up and running (more on this later):\n\n```bash\n$ cd xblock-configurable-lti-consumer\n$ make bootstrap\n```\n\nIf everything went well, you should now be able to access the following services:\n\n- Open edX LMS: http://localhost:8072\n- Open edX CMS: http://localhost:8082\n\nwith the following credentials:\n\n```\nemail: admin@example.com\npassword: admin\n```\n\n## Configuration examples\n\nA typical LTI configuration looks like this:\n\n```python\nLTI_XBLOCK_CONFIGURATIONS = [\n {\n \"display_name\": \"Marsha Video\",\n \"oauth_consumer_key\": \"InsecureOauthConsumerKey\",\n \"shared_secret\": \"InsecureSharedSecret\",\n \"is_launch_url_regex\": True,\n \"automatic_resizing\": True,\n \"inline_ratio\": 0.5625,\n \"hidden_fields\": [\n \"lti_id\",\n \"description\",\n \"launch_target\",\n \"custom_parameters\",\n \"button_text\",\n \"modal_height\",\n \"modal_width\",\n \"has_score\",\n \"weight\",\n \"hide_launch\",\n \"accept_grades_past_due\",\n \"ask_to_send_username\",\n \"ask_to_send_email\",\n ],\n \"defaults\": {\n \"custom_parameters\": [],\n \"ask_to_send_username\": True,\n \"weight\": 0,\n \"modal_height\": 400,\n \"ask_to_send_email\": True,\n \"accept_grades_past_due\": False,\n \"button_text\": \"button\",\n \"has_score\": False,\n \"hide_launch\": False,\n \"launch_target\": \"iframe\",\n \"modal_width\": 80,\n \"launch_url\": \"https://marsha\\.education/lti/videos/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\",\n \"lti_id\": \"marsha\",\n },\n },\n {\n \"pattern\": \".*ltiapps\\.net.*\",\n \"hidden_fields\": [\"launch_target\"],\n \"defaults\": {\"launch_target\": \"modal\"},\n },\n {\n \"display_name\": \"LTI consumer\",\n \"pattern\": \".*\",\n \"hidden_fields\": [\"ask_to_send_username\", \"ask_to_send_email\"],\n \"automatic_resizing\": False,\n \"defaults\": {\n \"ask_to_send_email\": True,\n \"launch_target\": \"new_window\",\n \"ask_to_send_username\": True,\n },\n },\n]\n```\n\nThis configuration does several things:\n\n- it adds a \"Marsha Video\" link behind the `Advanced` component button in the Studio to add a\n video in one click. The video is automatically added to the\n [Marsha](https://github.com/openfun/marsha) instance pointed by the launch url,\n- it forces all LTI consumer XBlocks that are pointing to `ltiapps.net` to use a modal,\n- it proposes all other LTI consumer XBlocks to open in a new window as a default and forces\n to ask before sending the user's username and email.\n\nThe order of each configuration in this list is important because we will use, for a given\nXBlock, the first configuration pattern that matches its launch url.\n\nIf you wish to encrypt the `oauth_consumer_key` and `shared_secret` credentials and keep the\nother settings visible, you can declare one of them or both in a separate setting\n`LTI_XBLOCK_SECRETS`, using the `lti_id` as mapping key:\n\n```python\nLTI_XBLOCK_SECRETS = {\n \"marsha\": {\n \"oauth_consumer_key\": \"InsecureOauthConsumerKey\",\n \"shared_secret\": \"InsecureSharedSecret\",\n }\n}\n```\n\nNote that the workbench included in the present repository is running this configuration\n(see [config/settings.yml.dist](./config/settings.yml.dist)) on the official France Universit\u00e9 Num\u00e9rique\n[Open edX extended Docker image](https://github.com/openfun/openedx-docker).\n\n\n## Integration to Open edX Studio\n\nFor now, this project requires a small fork of [edx/edx-platform](github.com/edx/edx-platform)\nif you want to add, for some of your configurations, preconfigured options in the\n`Advanced` component button of the Studio.\n\nIn our opinion, this small fork is worth applying because:\n\n- it will save you from installing many XBlocks and helps keep your Open edX installation manageable,\n- it allows you to automatically add a specific link for each LTI service you want to offer to your\n instructors. They don't need to activate LTI and provide the credentials for each course... they\n don't need to provide the launch url of the service for each XBlock they add...\n\nFor `open-release/hawthorn.1`, the patch to apply is available here:\nhttps://gist.github.com/sampaccoud/f15083325cec4f14a53bfb78fb4b4e42\n\n\n## Developer guide\n\nOnce the project has been bootstrapped (see \"Getting started\" section), to start\nworking on the project, use:\n\n```\n$ make dev\n```\n\nYou can stop running services _via_:\n\n```\n$ make stop\n```\n\nIf for any reason, you need to drop databases and start with fresh ones, use the\n`down` target:\n\n```\n$ make down\n```\n\n\n## License\n\nThis work is released under the AGPL 3.0 License (see [LICENSE](./LICENSE)).\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/openfun/xblock-configurable-lti-consumer", "keywords": "Django,Open edX,MOOC,XBlock", "license": "AGPL 3.0", "maintainer": "", "maintainer_email": "", "name": "configurable-lti-consumer-xblock", "package_url": "https://pypi.org/project/configurable-lti-consumer-xblock/", "platform": "", "project_url": "https://pypi.org/project/configurable-lti-consumer-xblock/", "project_urls": { "Homepage": "https://github.com/openfun/xblock-configurable-lti-consumer" }, "release_url": "https://pypi.org/project/configurable-lti-consumer-xblock/1.3.0/", "requires_dist": [ "exrex (==0.10.5)", "twine (==1.11.0) ; extra == 'dev'" ], "requires_python": "", "summary": "This Xblock adds configurability over the original lti_consumer XBlock from edx", "version": "1.3.0" }, "last_serial": 5990135, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "5dc75689285220e2e82fd7479d747aea", "sha256": "dfcdd5f05558b8a2b5376c4164f4adb0f2ebc3bb9a835dddfb27a3000f78765d" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5dc75689285220e2e82fd7479d747aea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20711, "upload_time": "2018-10-18T09:13:30", "url": "https://files.pythonhosted.org/packages/6c/8f/27e5dac97e4883361bcd09963ca33927dc54f557fe452e6b249e102b5755/configurable_lti_consumer_xblock-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df6a6f724c77ff31a26c0f91effdd82d", "sha256": "228e3eea649c244e7ba993b49ef737478b4ef7b99f0d563f6c7361d648f3b7f3" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-0.1.0.tar.gz", "has_sig": false, "md5_digest": "df6a6f724c77ff31a26c0f91effdd82d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4222, "upload_time": "2018-10-18T09:13:31", "url": "https://files.pythonhosted.org/packages/23/68/8974c8a191acfb19ff9c6f7561a63edb5798d426ec78bceae84214b33b8b/configurable_lti_consumer-xblock-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2a69f12ee29901f79b46356936700c3a", "sha256": "c6c9afc4f29452e74adb72acad5ef76866c6a5e83d668f0c7364ab83f3f4a674" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a69f12ee29901f79b46356936700c3a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22465, "upload_time": "2018-11-13T13:24:57", "url": "https://files.pythonhosted.org/packages/c5/66/e94d960e626d800a5a0b8682044c4a629346c7312d6163735f9d67da5c91/configurable_lti_consumer_xblock-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f2441edd53be37aaa5a2b034ab3be45", "sha256": "3465acb0e2ad2022b8bf8051c9408fc2ffc136ea3df7531b635dd5da61178e2f" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-0.2.0.tar.gz", "has_sig": false, "md5_digest": "5f2441edd53be37aaa5a2b034ab3be45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5023, "upload_time": "2018-11-13T13:24:59", "url": "https://files.pythonhosted.org/packages/94/0c/ffc960a040d9baeb522a79eaf4007d530b413ebea35dc9938f57680a0eb1/configurable_lti_consumer-xblock-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f77ea252a907251f36ab6e665f6bc36d", "sha256": "8aa50eb7c220fa5aedb2a6b6b258c74659c3e05e94914b524918af9f25ac9ae8" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f77ea252a907251f36ab6e665f6bc36d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22418, "upload_time": "2018-11-15T15:42:50", "url": "https://files.pythonhosted.org/packages/67/e4/6cf792fa1c11e9a7d049c417463d68f4e84ccc41324113e783562563baea/configurable_lti_consumer_xblock-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7882245389a0ba409d441e2a2daa3740", "sha256": "c7329821ccbc51233ff5ded198db38beb7040650d20f209264379fa6f8e2358a" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7882245389a0ba409d441e2a2daa3740", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5002, "upload_time": "2018-11-15T15:42:52", "url": "https://files.pythonhosted.org/packages/b3/a4/d827872d2aaf96e8cf76326c8fc5e468b09409f23b8e266fefbf2cf385e7/configurable_lti_consumer-xblock-0.2.1.tar.gz" } ], "1.0.0rc1": [ { "comment_text": "", "digests": { "md5": "5446e52adaed68a90736bfdb5a985499", "sha256": "1e976506c61f42cc7d424217be1b3becf9621be9a28217b79f6b04f78b395602" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.0.0rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5446e52adaed68a90736bfdb5a985499", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24104, "upload_time": "2018-11-28T10:42:11", "url": "https://files.pythonhosted.org/packages/7e/20/f8e1721e4f45a797effbc392d432d1bee4b00db4e019c51c374f788b1c7e/configurable_lti_consumer_xblock-1.0.0rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "883e304c09c48514049d2893cbb73e47", "sha256": "7b42450291ddd06b78cb253cc90cb98a55cc9cb5ed824da453cbc0e03f80412d" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "883e304c09c48514049d2893cbb73e47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7297, "upload_time": "2018-11-28T10:42:13", "url": "https://files.pythonhosted.org/packages/28/3c/1e73bb1b92b208385bd848baab451ebaeb7f9f9f83ca5632bd2b2454f6c2/configurable_lti_consumer-xblock-1.0.0rc1.tar.gz" } ], "1.0.0rc2": [ { "comment_text": "", "digests": { "md5": "872907051e445abe578e2367dea06bf0", "sha256": "81dd0fe0957f8822fcdd823d58ee381d817701e7f8c55a84f49926d088a02445" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.0.0rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "872907051e445abe578e2367dea06bf0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24106, "upload_time": "2019-01-16T08:58:55", "url": "https://files.pythonhosted.org/packages/87/82/d8e8ec5052db8e5b0e5315137fc94b2fc0b1fabf4bd724a21f10ae62c0b6/configurable_lti_consumer_xblock-1.0.0rc2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "465a524fbe3137dcb2e6755e4a0dcd58", "sha256": "b51b7113aadd83eddc170d29ae895bec34ec0c320936628b4bbf30c638e058cb" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.0.0rc2.tar.gz", "has_sig": false, "md5_digest": "465a524fbe3137dcb2e6755e4a0dcd58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7274, "upload_time": "2019-01-16T08:58:56", "url": "https://files.pythonhosted.org/packages/27/e1/06ec0c66f59f3ab87db4c1f7183268138fc10a9d3c629ca234e6610b5433/configurable_lti_consumer-xblock-1.0.0rc2.tar.gz" } ], "1.0.0rc3": [ { "comment_text": "", "digests": { "md5": "11a064dba58cc87fdc17ae73bb1939cb", "sha256": "fd8918c118a953063e3497370c68aef14589aeb223d62ff3a2ed6b9db6c71307" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.0.0rc3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11a064dba58cc87fdc17ae73bb1939cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23989, "upload_time": "2019-01-18T14:36:06", "url": "https://files.pythonhosted.org/packages/f8/82/6d75c713f1dedaa4b04bbc4e6178f1930daad82e085396d4d28e5ca3ec20/configurable_lti_consumer_xblock-1.0.0rc3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "956372802c34afd641b7dc85dccfcdc2", "sha256": "27f7a981de7764b20b78dee4e8e2cc5b33e0d528f4b5f5c96b1121ddca983790" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.0.0rc3.tar.gz", "has_sig": false, "md5_digest": "956372802c34afd641b7dc85dccfcdc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7745, "upload_time": "2019-01-18T14:36:07", "url": "https://files.pythonhosted.org/packages/6e/7f/0f143b8cea116b51acd9f89512fa6508a13091bd720251a437ced6e61e59/configurable_lti_consumer-xblock-1.0.0rc3.tar.gz" } ], "1.0.0rc4": [ { "comment_text": "", "digests": { "md5": "af1d905afb95341825c06668a3990d18", "sha256": "98a613731f3f313a661fe8b35084daaa0829b0d26bb1b74513a9b0438c6b4bee" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.0.0rc4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "af1d905afb95341825c06668a3990d18", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38632, "upload_time": "2019-01-18T20:29:28", "url": "https://files.pythonhosted.org/packages/b6/8a/c25c1639ab6f31e6132827a033c4f2fa999c93949c678f82009ee74133d1/configurable_lti_consumer_xblock-1.0.0rc4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e7a4a252ad0192faaec3fa0c5fa7e71", "sha256": "d6b3d7a87220d6e8056c4c5198f414b2d27c1e69bb223cae44e276c86b371dd3" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.0.0rc4.tar.gz", "has_sig": false, "md5_digest": "0e7a4a252ad0192faaec3fa0c5fa7e71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22716, "upload_time": "2019-01-18T20:29:29", "url": "https://files.pythonhosted.org/packages/1e/b6/092cf6fa970d0f2f13b40d8acec9f494a9bc2ab5dd5c9ba72bfc6823fa5a/configurable_lti_consumer-xblock-1.0.0rc4.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "020848dde822b994c218e3af211e50e3", "sha256": "7dbca1219c75f45a593e4e6b61714e3b1de21d140cb9ceb84860e6a04091e3df" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "020848dde822b994c218e3af211e50e3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38833, "upload_time": "2019-01-21T17:14:57", "url": "https://files.pythonhosted.org/packages/5e/9b/53acdad4f8308dbe49a5fb64d7e14987490219c8f61a54ed1a25414c132d/configurable_lti_consumer_xblock-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ca26c2c6c9eee6def430633bd8a206c", "sha256": "b8140c971007781174241b434c28320993be7cd05f27fb0d0ea4a978bd99f281" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.1.0.tar.gz", "has_sig": false, "md5_digest": "8ca26c2c6c9eee6def430633bd8a206c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23077, "upload_time": "2019-01-21T17:14:59", "url": "https://files.pythonhosted.org/packages/b5/1d/c90f473a7f5d349bc20f294a2921d27a3de8302249a07054d140c6110334/configurable_lti_consumer-xblock-1.1.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "d7138ab9672befb85af8c1865afe9082", "sha256": "548d833dfcae4c367609982025b5fb76ff975035b108f607cd3f5b11be21eee8" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d7138ab9672befb85af8c1865afe9082", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38865, "upload_time": "2019-02-14T15:32:14", "url": "https://files.pythonhosted.org/packages/3e/65/27095b7a42086855fa918baed1bd9c5367fb3840780950509e666dc976fd/configurable_lti_consumer_xblock-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14cfb86b2988d8510effe82b01b57fc9", "sha256": "c0d1f2452686c9b9de10c168e5e8647039ed330bf6963aa64d938bb6432eb007" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.2.1.tar.gz", "has_sig": false, "md5_digest": "14cfb86b2988d8510effe82b01b57fc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24810, "upload_time": "2019-02-14T15:32:15", "url": "https://files.pythonhosted.org/packages/ff/c8/e2d0dbdeab3919a53fb9e0713cd59c6587793a91d7746bf408118b410ce7/configurable_lti_consumer-xblock-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "e1b24afebcdb316d04c22b516d209d34", "sha256": "c4b9f3a6635a1f0069b80ee0cd0467e267aeb5b435a20f0017830b3c5b8e9b57" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e1b24afebcdb316d04c22b516d209d34", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39053, "upload_time": "2019-03-04T22:18:58", "url": "https://files.pythonhosted.org/packages/8a/61/cce2991025bac1829da91ecdf79554f349cd645e277e93be70cdca24b627/configurable_lti_consumer_xblock-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fdb46caac70ff36f2e71cbf263c6e382", "sha256": "0a73103cf53ac7b0f19d242510a7eca5d01ba6049053130bfe2ccb9a1ccdd6ae" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.2.2.tar.gz", "has_sig": false, "md5_digest": "fdb46caac70ff36f2e71cbf263c6e382", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23389, "upload_time": "2019-03-04T22:18:59", "url": "https://files.pythonhosted.org/packages/6d/05/e606f12e376e3c65da483a2b72ca119f8af827e16117bce170b6790f9b56/configurable_lti_consumer-xblock-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "2f441ef0a50b8a6364427b34747f727d", "sha256": "a13001b6360fa618c47d871c85c4da8a3a198e0ac211829cf8371499bfadab3d" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f441ef0a50b8a6364427b34747f727d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39079, "upload_time": "2019-03-19T14:06:07", "url": "https://files.pythonhosted.org/packages/47/94/a4ca1780873a08333f5345a83d297a1b205461e5a720aebcadb4d60f8c36/configurable_lti_consumer_xblock-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b5a20371923618e8ef90422df839834", "sha256": "d87fc7024e394571c3ed8b887f1226f8b998557be694c7070d44e7dca2543053" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.2.3.tar.gz", "has_sig": false, "md5_digest": "4b5a20371923618e8ef90422df839834", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23495, "upload_time": "2019-03-19T14:06:09", "url": "https://files.pythonhosted.org/packages/9c/8a/51f55a558997f0889c8b80173bdbf0644f8a55b798600acaaa215991e6c3/configurable_lti_consumer-xblock-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "589644ad018b811528c929f734a12dc2", "sha256": "3a4afab0a6f0208aee8a74013fb8c47975b93f633ab97cf4fb91bf7aa2d15b4d" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "589644ad018b811528c929f734a12dc2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39054, "upload_time": "2019-10-10T08:43:19", "url": "https://files.pythonhosted.org/packages/34/21/0f35a453766c47680f634439a2654ce60ed8915408b9b00abf67cbb040a5/configurable_lti_consumer_xblock-1.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76748da57ea6c0710b926d2698575298", "sha256": "b44a09e18d31ec1fd66083ded3e90b4ffbfcee680ed991e25f24b808abb6692c" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.2.4.tar.gz", "has_sig": false, "md5_digest": "76748da57ea6c0710b926d2698575298", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26027, "upload_time": "2019-10-10T08:43:25", "url": "https://files.pythonhosted.org/packages/d5/cf/b9c5bb6ded723c28c9789d56091ce67b03ae8263e6008b9f96e4763612c0/configurable_lti_consumer-xblock-1.2.4.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "a551ca1041b9f9ad95edddbfcdecead2", "sha256": "328d03a34f3628332728157df8a4d6d4f2f5069da942f7668bae2b5c9aa14df5" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a551ca1041b9f9ad95edddbfcdecead2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39272, "upload_time": "2019-10-17T14:34:46", "url": "https://files.pythonhosted.org/packages/1e/de/b1bd0f23613baa95d1d68a822f845841221fa1b094b0f4df392ef6bcffa8/configurable_lti_consumer_xblock-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed621fc6d2ea0fd5044ea37e1375ab45", "sha256": "e24697a1131974fdac5216116a100498c51fb49ed7e5355cdad53af2760e0357" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.3.0.tar.gz", "has_sig": false, "md5_digest": "ed621fc6d2ea0fd5044ea37e1375ab45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23757, "upload_time": "2019-10-17T14:34:48", "url": "https://files.pythonhosted.org/packages/16/14/69a9eeee629e3762e5e4c97ab73e65ce38ec18b9023b6fd22cab0846a6ee/configurable_lti_consumer-xblock-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a551ca1041b9f9ad95edddbfcdecead2", "sha256": "328d03a34f3628332728157df8a4d6d4f2f5069da942f7668bae2b5c9aa14df5" }, "downloads": -1, "filename": "configurable_lti_consumer_xblock-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a551ca1041b9f9ad95edddbfcdecead2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39272, "upload_time": "2019-10-17T14:34:46", "url": "https://files.pythonhosted.org/packages/1e/de/b1bd0f23613baa95d1d68a822f845841221fa1b094b0f4df392ef6bcffa8/configurable_lti_consumer_xblock-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed621fc6d2ea0fd5044ea37e1375ab45", "sha256": "e24697a1131974fdac5216116a100498c51fb49ed7e5355cdad53af2760e0357" }, "downloads": -1, "filename": "configurable_lti_consumer-xblock-1.3.0.tar.gz", "has_sig": false, "md5_digest": "ed621fc6d2ea0fd5044ea37e1375ab45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23757, "upload_time": "2019-10-17T14:34:48", "url": "https://files.pythonhosted.org/packages/16/14/69a9eeee629e3762e5e4c97ab73e65ce38ec18b9023b6fd22cab0846a6ee/configurable_lti_consumer-xblock-1.3.0.tar.gz" } ] }