diff --git a/CHANGELOG.md b/CHANGELOG.md index 08511ca..e3451f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Note: Breaking changes between versions are indicated by "💥". ## Unreleased - [Bugfix] Fix `k8s start caddy` command. +- [Improvement] Replace all links to github.com/edx by github.com/openedx, following the migration of all repositories. ## v13.1.2 (2022-01-30) @@ -71,7 +72,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v12.2.0 (2021-12-08) -- [Bugfix] Fix incorrect "from" address in course bulk emails (see [pull request](https://github.com/edx/edx-platform/pull/29001)). +- [Bugfix] Fix incorrect "from" address in course bulk emails (see [pull request](https://github.com/openedx/edx-platform/pull/29001)). - 💥[Improvement] Fail on incorrect image name argument in `images build/pull/push/printtag` commands. - [Bugfix] Remove trailing slashes in docker-compose files for [compatibility with docker-compose v2 in WSL](https://github.com/docker/compose/issues/8558). - [Improvement] `settheme` now works with preview domain. @@ -79,7 +80,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v12.1.7 (2021-11-18) -- [Security] Timed exam security fix [29347](https://github.com/edx/edx-platform/pull/29347). +- [Security] Timed exam security fix [29347](https://github.com/openedx/edx-platform/pull/29347). - [Feature] Add [tutor-richie](https://github.com/overhangio/tutor-richie) to the plugins that are bundled with the tutor binary. - [Improvement] Make `tutor plugins list` print plugins sorted by name. - [Improvement] Ignore Python plugins which cannot be loaded. @@ -128,7 +129,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v12.0.4 (2021-08-12) -- [Security] Apply security patch [28442](https://github.com/edx/edx-platform/pull/28442). +- [Security] Apply security patch [28442](https://github.com/openedx/edx-platform/pull/28442). ## v12.0.3 (2021-08-10) @@ -175,7 +176,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v11.2.10 (2021-05-17) - [Security] Apply Django security patches by upgrading from 2.2.20 to 2.2.23. -- [Bugfix] Fix video unit completion (see [pull request](https://github.com/edx/edx-platform/pull/27230)). +- [Bugfix] Fix video unit completion (see [pull request](https://github.com/openedx/edx-platform/pull/27230)). ## v11.2.9 (2021-05-12) @@ -189,7 +190,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v11.2.7 (2021-04-23) -- [Security] Apply security patch [27394](https://github.com/edx/edx-platform/pull/27394). +- [Security] Apply security patch [27394](https://github.com/openedx/edx-platform/pull/27394). - [Feature] Add patches to extend python requirements installation process in openedx and openedx-dev Dockerfiles. - [Improvement] Apply edx-platform patches during Docker image build using tutor patch 'openedx-dockerfile-git-patches-default'. @@ -218,7 +219,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v11.2.2 (2021-02-17) -- [Security] Apply security patch [26592](https://github.com/edx/edx-platform/pull/26592). +- [Security] Apply security patch [26592](https://github.com/openedx/edx-platform/pull/26592). ## v11.2.1 (2021-02-16) @@ -230,16 +231,16 @@ Note: Breaking changes between versions are indicated by "💥". ## v11.1.5 (2021-02-09) -- [Security] Apply security patch [26432](https://github.com/edx/edx-platform/pull/26432). +- [Security] Apply security patch [26432](https://github.com/openedx/edx-platform/pull/26432). - [Bugfix] Print warnings to stderr. ## v11.1.4 (2021-02-04) -- [Security] Apply security patch [26358](https://github.com/edx/edx-platform/pull/26358). +- [Security] Apply security patch [26358](https://github.com/openedx/edx-platform/pull/26358). ## v11.1.3 (2021-01-31) -- [Security] Apply security patch [26253](https://github.com/edx/edx-platform/pull/26253). +- [Security] Apply security patch [26253](https://github.com/openedx/edx-platform/pull/26253). ## v11.1.2 (2021-01-29) @@ -249,7 +250,7 @@ Note: Breaking changes between versions are indicated by "💥". - [Feature] Add a `tutor images build --target=...` argument for [multi-stage Docker builds](https://docs.docker.com/develop/develop-images/multistage-build/). - [Feature] Create a test version of the openedx-dev Docker image for running edx-platform unit tests. -- [Security] Apply security patch [26112](https://github.com/edx/edx-platform/pull/26112). +- [Security] Apply security patch [26112](https://github.com/openedx/edx-platform/pull/26112). - [Bugfix] Fix `local exec` command which crashed with a `AttributeError`. ## v11.1.0 (2021-01-13) @@ -259,11 +260,11 @@ Note: Breaking changes between versions are indicated by "💥". ## v11.0.7 (2021-01-11) -- [Security] Apply security patch [26029](https://github.com/edx/edx-platform/pull/26029). +- [Security] Apply security patch [26029](https://github.com/openedx/edx-platform/pull/26029). ## v11.0.6 (2021-01-05) -- [Security] Apply security patch [25974](https://github.com/edx/edx-platform/pull/25974). +- [Security] Apply security patch [25974](https://github.com/openedx/edx-platform/pull/25974). ## v11.0.5 (2020-12-30) @@ -279,11 +280,11 @@ Note: Breaking changes between versions are indicated by "💥". ## v11.0.2 (2020-12-12) -- [Bugfix] Fix missing celery tasks from edx-platform (see [upstream PR](https://github.com/edx/edx-platform/pull/25840)). +- [Bugfix] Fix missing celery tasks from edx-platform (see [upstream PR](https://github.com/openedx/edx-platform/pull/25840)). ## v11.0.1 (2020-12-10) -- [Security] Apply security patch [25834](https://github.com/edx/edx-platform/pull/25834). +- [Security] Apply security patch [25834](https://github.com/openedx/edx-platform/pull/25834). - [Bugfix] Fix Android apk directory mount path. ## v11.0.0 (2020-12-09) @@ -313,7 +314,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v10.5.3 (2020-12-09) -- [Security] Apply upstream edx-platform [security patch](https://github.com/edx/edx-platform/pull/25782). +- [Security] Apply upstream edx-platform [security patch](https://github.com/openedx/edx-platform/pull/25782). ## v10.5.2 (2020-12-07) @@ -394,7 +395,7 @@ Note: Breaking changes between versions are indicated by "💥". - [Bugfix] Fix incorrect loading of some resources from localhost:18000 in development. - [Bugfix] Fix Samesite=None Secure=False cookie error for users accessing the LMS with the latest release of Google Chrome. -- [Security] Apply javascript security patch ([pull request](https://github.com/edx/edx-platform/pull/24762)). +- [Security] Apply javascript security patch ([pull request](https://github.com/openedx/edx-platform/pull/24762)). - [Bugfix] Fix "FileError" on Scorm package upload in Scorm XBlock. - 💥[Improvement] Serve openedx static assets with [whitenoise](http://whitenoise.evans.io/en/stable/) instead of nginx. This removes the `k8s-deployments-nginx-init-containers` patch. Plugins are encouraged to implement static asset serving with Whitenoise as well. - [Bugfix] Fix dependency on mysql service when mysql is not activated. @@ -403,7 +404,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v10.1.0 (2020-07-23) -- [Security] Apply edx-platform upstream xss security fixes ([pull request](https://github.com/edx/edx-platform/pull/24568)). +- [Security] Apply edx-platform upstream xss security fixes ([pull request](https://github.com/openedx/edx-platform/pull/24568)). - 💥[Feature] Make it possible to override the docker registry for just a few services by setting `DOCKER_IMAGE_SERVICENAME` values. ## v10.0.11 (2020-07-16) @@ -437,7 +438,7 @@ Note: Breaking changes between versions are indicated by "💥". ## v10.0.5 (2020-06-21) -- [Security] Apply edx-platform upstream xss security fixes ([pull request](https://github.com/edx/edx-platform/pull/24258)). +- [Security] Apply edx-platform upstream xss security fixes ([pull request](https://github.com/openedx/edx-platform/pull/24258)). ## v10.0.4 (2020-06-19) diff --git a/docs/configuration.rst b/docs/configuration.rst index 6df489b..ce15ead 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -212,7 +212,7 @@ openedx Docker Image build arguments When building the "openedx" Docker image, it is possible to specify a few `arguments `__: -- ``EDX_PLATFORM_REPOSITORY`` (default: ``"https://github.com/edx/edx-platform.git"``) +- ``EDX_PLATFORM_REPOSITORY`` (default: ``"https://github.com/openedx/edx-platform.git"``) - ``EDX_PLATFORM_VERSION`` (default: ``"{{ OPENEDX_COMMON_VERSION }}"``) - ``NPM_REGISTRY`` (default: ``"https://registry.npmjs.org/"``) @@ -269,7 +269,7 @@ Then, declare your extra requirements with the ``-e`` flag in ``openedx/requirem Running a fork of ``edx-platform`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -You may want to run your own flavor of edx-platform instead of the `official version `_. To do so, you will have to re-build the openedx image with the proper environment variables pointing to your repository and version:: +You may want to run your own flavor of edx-platform instead of the `official version `_. To do so, you will have to re-build the openedx image with the proper environment variables pointing to your repository and version:: tutor images build openedx \ --build-arg EDX_PLATFORM_REPOSITORY=https://mygitrepo/edx-platform.git \ @@ -290,7 +290,7 @@ If you don't create your fork from this tag, you *will* have important compatibi Adding custom translations ~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you are not running Open edX in English, chances are that some strings will not be properly translated. In most cases, this is because not enough contributors have helped translate Open edX in your language. It happens! With Tutor, available translated languages include those that come bundled with `edx-platform `__ as well as those from `openedx-i18n `__. +If you are not running Open edX in English, chances are that some strings will not be properly translated. In most cases, this is because not enough contributors have helped translate Open edX in your language. It happens! With Tutor, available translated languages include those that come bundled with `edx-platform `__ as well as those from `openedx-i18n `__. Tutor offers a relatively simple mechanism to add custom translations to the openedx Docker image. You should create a folder that corresponds to your language code in the "build/openedx/locale" folder of the Tutor environment. This folder should contain a "LC_MESSAGES" folder. For instance:: @@ -311,9 +311,9 @@ Then, add a "django.po" file there that will contain your custom translations:: .. warning:: Don't forget to specify the file ``Content-Type`` when adding message strings with non-ASCII characters; otherwise a ``UnicodeDecodeError`` will be raised during compilation. -The "String to translate" part should match *exactly* the string that you would like to translate. You cannot make it up! The best way to find this string is to copy-paste it from the `upstream django.po file for the English language `__. +The "String to translate" part should match *exactly* the string that you would like to translate. You cannot make it up! The best way to find this string is to copy-paste it from the `upstream django.po file for the English language `__. -If you cannot find the string to translate in this file, then it means that you are trying to translate a string that is used in some piece of javascript code. Those strings are stored in a different file named "djangojs.po". You can check it out `in the edx-platform repo as well `__. Your custom javascript strings should also be stored in a "djangojs.po" file that should be placed in the same directory. +If you cannot find the string to translate in this file, then it means that you are trying to translate a string that is used in some piece of javascript code. Those strings are stored in a different file named "djangojs.po". You can check it out `in the edx-platform repo as well `__. Your custom javascript strings should also be stored in a "djangojs.po" file that should be placed in the same directory. To recap, here is an example. To translate a few strings in French, both from django.po and djangojs.po, we would have the following file hierarchy:: diff --git a/docs/dev.rst b/docs/dev.rst index 5410a31..b799c7c 100644 --- a/docs/dev.rst +++ b/docs/dev.rst @@ -25,7 +25,7 @@ This ``openedx-dev`` development image differs from the ``openedx`` production i - The user that runs inside the container has the same UID as the user on the host, in order to avoid permission problems inside mounted volumes (and in particular in the edx-platform repository). - Additional python and system requirements are installed for convenient debugging: `ipython `__, `ipdb `__, vim, telnet. -- The edx-platform `development requirements `__ are installed. +- The edx-platform `development requirements `__ are installed. Since the ``openedx-dev`` is based upon the ``openedx`` docker image, it should be re-built every time the ``openedx`` docker image is modified. @@ -84,7 +84,7 @@ Notice how the ``--volume=/openedx/venv`` option differs from `Docker syntax `__ repository. In such cases, you can simply use the ``-v/--volume`` `Docker option `__:: +The above solution may not work for you if you already have an existing directory, outside of the "volumes/" directory, which you would like mounted in one of your containers. For instance, you may want to mount your copy of the `edx-platform `__ repository. In such cases, you can simply use the ``-v/--volume`` `Docker option `__:: tutor dev run --volume=/path/to/edx-platform:/openedx/edx-platform lms bash @@ -123,7 +123,7 @@ Common tasks Setting up a development environment for edx-platform ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Following the instructions :ref:`above ` on how to bind-mount directories from the host above, you may mount your own `edx-platform `__ fork in your containers by running either:: +Following the instructions :ref:`above ` on how to bind-mount directories from the host above, you may mount your own `edx-platform `__ fork in your containers by running either:: # Mount from the volumes/ directory tutor dev bindmount lms /openedx/edx-platform @@ -206,7 +206,7 @@ From then on, all ``dev`` commands will use the ``mysettings`` module. For insta Running edx-platform unit tests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -It's possible to run the full set of unit tests that ship with `edx-platform `__. To do so, run a shell in the LMS development container:: +It's possible to run the full set of unit tests that ship with `edx-platform `__. To do so, run a shell in the LMS development container:: tutor dev run lms bash diff --git a/docs/faq.rst b/docs/faq.rst index 6f2f60c..6e6de8a 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -6,7 +6,7 @@ FAQ What is Tutor? -------------- -Tutor is an open source distribution of `Open edX `_. It uses the original code from the various Open edX repositories, such as `edx-platform `_, `cs_comments_service `_, etc. and packages everything in a way that makes it very easy to install, administer and upgrade Open edX. In particular, all services are run inside Docker containers. +Tutor is an open source distribution of `Open edX `_. It uses the original code from the various Open edX repositories, such as `edx-platform `_, `cs_comments_service `_, etc. and packages everything in a way that makes it very easy to install, administer and upgrade Open edX. In particular, all services are run inside Docker containers. Tutor makes it possible to deploy Open edX locally, with `docker-compose `_ or on an existing `Kubernetes cluster `_. Want to learn more? Take a look at the :ref:`getting started concepts `. @@ -20,7 +20,7 @@ To make it possible to deploy, administer and upgrade Open edX anywhere, easily. What's the difference with the official "native" installation? -------------------------------------------------------------- -The `native installation `_ maintained by edX relies on `Ansible scripts `_ to deploy Open edX on one or multiple servers. These scripts suffer from a couple issues that Tutor tries to address: +The `native installation `_ maintained by edX relies on `Ansible scripts `_ to deploy Open edX on one or multiple servers. These scripts suffer from a couple issues that Tutor tries to address: 1. Complexity: the scripts contain close to 35k lines of code spread over 780 files. They are really hard to understand, debug, and modify, and they are extremly slow. As a consequence, Open edX is often wrongly perceived as a project that is overly complex to manage. In contrast, Tutor generates mostly ``Dockerfile`` and ``docker-compose.yml`` files that make it easy to understand what is going on. Also, the whole installation should take about 10 minutes. 2. Isolation from the OS: Tutor barely needs to touch your server because the entire platform is packaged inside Docker containers. You are thus free to run other services on your server without fear of indirectly crashing your Open edX platform. @@ -33,7 +33,7 @@ There are also many features that are not included in the native installation, s What's the difference with the official devstack? ------------------------------------------------- -The `devstack `_ is meant for development only, not for production deployment. Tutor can be used both for production deployment and :ref:`locally hacking on Open edX `. +The `devstack `_ is meant for development only, not for production deployment. Tutor can be used both for production deployment and :ref:`locally hacking on Open edX `. Is Tutor officially supported by edX? ------------------------------------- @@ -45,7 +45,7 @@ What features are missing from Tutor? Tutor tries very hard to support all major Open edX features, notably in the form of :ref:`plugins `. If you are interested in sponsoring the development of a new plugin, please `get in touch `__! -It should be noted that the `Insights `__ stack is currently unsupported, because of its complexity, lack of support and extensibility. To replace it, Overhang.IO developed `Cairn `__ the next-generation analytics solution for Open edX, part of the `Tutor Wizard Edition `__. You should check it out 😉 +It should be noted that the `Insights `__ stack is currently unsupported, because of its complexity, lack of support and extensibility. To replace it, Overhang.IO developed `Cairn `__ the next-generation analytics solution for Open edX, part of the `Tutor Wizard Edition `__. You should check it out 😉 Are there people already running this in production? ---------------------------------------------------- diff --git a/docs/local.rst b/docs/local.rst index b29b876..011b6ac 100644 --- a/docs/local.rst +++ b/docs/local.rst @@ -118,7 +118,7 @@ You will asked to set the user password interactively. Importing the demo course ~~~~~~~~~~~~~~~~~~~~~~~~~ -After a fresh installation, your platform will not have a single course. To import the `Open edX demo course `_, run:: +After a fresh installation, your platform will not have a single course. To import the `Open edX demo course `_, run:: tutor local importdemocourse diff --git a/docs/troubleshooting.rst b/docs/troubleshooting.rst index af4b9c5..8d3659a 100644 --- a/docs/troubleshooting.rst +++ b/docs/troubleshooting.rst @@ -109,7 +109,7 @@ This will occur if you try to run a development environment without patching the The chosen default language does not display properly ----------------------------------------------------- -By default, Open edX comes with a `limited set ` of translation/localization files. To complement these languages, we add locales from the `openedx-i18n project `_. But not all supported locales are downloaded. In some cases, the chosen default language will not display properly because if was not packaged in either edx-platform or openedx-i18n. If you feel like your language should be packaged, please `open an issue on the openedx-i18n project `_. +By default, Open edX comes with a `limited set ` of translation/localization files. To complement these languages, we add locales from the `openedx-i18n project `_. But not all supported locales are downloaded. In some cases, the chosen default language will not display properly because if was not packaged in either edx-platform or openedx-i18n. If you feel like your language should be packaged, please `open an issue on the openedx-i18n project `_. When I make changes to a course in the CMS, they are not taken into account by the LMS -------------------------------------------------------------------------------------- diff --git a/docs/whatnext.rst b/docs/whatnext.rst index 0fe3322..5d12300 100644 --- a/docs/whatnext.rst +++ b/docs/whatnext.rst @@ -13,7 +13,7 @@ Out of the box, Tutor does not create any user for you. You will want to create Importing a demo course ----------------------- -To get a glimpse of the possibilities of Open edX, we recommend you import the `official demo test course `__. Tutor provides a :ref:`simple command for that `. +To get a glimpse of the possibilities of Open edX, we recommend you import the `official demo test course `__. Tutor provides a :ref:`simple command for that `. Making Open edX look better --------------------------- diff --git a/tutor/templates/build/openedx/Dockerfile b/tutor/templates/build/openedx/Dockerfile index 1b15f7a..850880b 100644 --- a/tutor/templates/build/openedx/Dockerfile +++ b/tutor/templates/build/openedx/Dockerfile @@ -29,7 +29,7 @@ RUN curl -L -o /tmp/dockerize.tar.gz https://github.com/jwilder/dockerize/releas ###### Checkout edx-platform code FROM minimal as code -ARG EDX_PLATFORM_REPOSITORY=https://github.com/edx/edx-platform.git +ARG EDX_PLATFORM_REPOSITORY=https://github.com/openedx/edx-platform.git ARG EDX_PLATFORM_VERSION={{ OPENEDX_COMMON_VERSION }} RUN mkdir -p /openedx/edx-platform && \ git clone $EDX_PLATFORM_REPOSITORY --branch $EDX_PLATFORM_VERSION --depth 1 /openedx/edx-platform @@ -45,10 +45,10 @@ RUN git config --global user.email "tutor@overhang.io" \ {% else %} # Patch edx-platform # Fix language cookie "samesite" attribute -# https://github.com/edx/edx-platform/pull/29621 +# https://github.com/openedx/edx-platform/pull/29621 RUN git fetch --depth=2 https://github.com/regisb/edx-platform 51e0ec3b97ae5badbf947d53ac07bd5496c10cde && git cherry-pick 51e0ec3b97ae5badbf947d53ac07bd5496c10cde # Fix forum notification for questions -# https://github.com/edx/edx-platform/pull/29611 +# https://github.com/openedx/edx-platform/pull/29611 RUN git fetch --depth=2 https://github.com/open-craft/edx-platform/ 03731f19459e558f188c06aac5cc9ca1bbc675c2 && git cherry-pick 03731f19459e558f188c06aac5cc9ca1bbc675c2 # Security fixes: user search by email # https://github.com/overhangio/edx-platform/commit/78da3d86b79e808462b88f219efb90bf8253a5d1 @@ -56,11 +56,11 @@ RUN git fetch --depth=2 https://github.com/open-craft/edx-platform/ 03731f19459e RUN git fetch --depth=2 https://github.com/overhangio/edx-platform/ 78da3d86b79e808462b88f219efb90bf8253a5d1 && git cherry-pick 78da3d86b79e808462b88f219efb90bf8253a5d1 RUN git fetch --depth=2 https://github.com/overhangio/edx-platform/ b63c01fb38a60f4581bdecbc528fa64cc3d3ef0d && git cherry-pick b63c01fb38a60f4581bdecbc528fa64cc3d3ef0d # Upgrade Django to 3.2.11 -# https://github.com/edx/edx-platform/commit/85eb44445b8a6207b967bd4af5666e521a4af9b5 -RUN git fetch --depth=2 https://github.com/edx/edx-platform/ 85eb44445b8a6207b967bd4af5666e521a4af9b5 && git cherry-pick 85eb44445b8a6207b967bd4af5666e521a4af9b5 +# https://github.com/openedx/edx-platform/commit/85eb44445b8a6207b967bd4af5666e521a4af9b5 +RUN git fetch --depth=2 https://github.com/openedx/edx-platform/ 85eb44445b8a6207b967bd4af5666e521a4af9b5 && git cherry-pick 85eb44445b8a6207b967bd4af5666e521a4af9b5 {% endif %} -{# Example: RUN git fetch --depth=2 https://github.com/edx/edx-platform && git cherry-pick #} +{# Example: RUN git fetch --depth=2 https://github.com/openedx/edx-platform && git cherry-pick #} {{ patch("openedx-dockerfile-post-git-checkout") }} ###### Download extra locales to /openedx/locale/contrib/locale diff --git a/tutor/templates/hooks/cms/importdemocourse b/tutor/templates/hooks/cms/importdemocourse index c3297d8..236d7b1 100644 --- a/tutor/templates/hooks/cms/importdemocourse +++ b/tutor/templates/hooks/cms/importdemocourse @@ -1,8 +1,8 @@ echo "Loading settings $DJANGO_SETTINGS_MODULE" # Import demo course -git clone https://github.com/edx/edx-demo-course --branch {{ OPENEDX_COMMON_VERSION }} --depth 1 ../edx-demo-course +git clone https://github.com/openedx/edx-demo-course --branch {{ OPENEDX_COMMON_VERSION }} --depth 1 ../edx-demo-course python ./manage.py cms import ../data ../edx-demo-course # Re-index courses -./manage.py cms reindex_course --all --setup \ No newline at end of file +./manage.py cms reindex_course --all --setup diff --git a/tutor/templates/hooks/lms/init b/tutor/templates/hooks/lms/init index 0057ada..fa05a50 100644 --- a/tutor/templates/hooks/lms/init +++ b/tutor/templates/hooks/lms/init @@ -5,7 +5,7 @@ echo "Loading settings $DJANGO_SETTINGS_MODULE" ./manage.py lms migrate # Create oauth2 apps for CMS SSO -# https://github.com/edx/edx-platform/blob/master/docs/guides/studio_oauth.rst +# https://github.com/openedx/edx-platform/blob/master/docs/guides/studio_oauth.rst ./manage.py lms manage_user cms cms@openedx --unusable-password ./manage.py lms create_dot_application \ --grant-type authorization-code \