Merge pull request #30951 from openedx/tcril/fix-gh-org-url

Fix github url strings (org edx -> openedx)
This commit is contained in:
Sarina Canelake
2022-09-16 09:58:15 -04:00
committed by GitHub
126 changed files with 362 additions and 464 deletions

View File

@@ -235,7 +235,7 @@ social_django.UserSocialAuth:
".. pii_types:": external_service
".. pii_retirement:": local_api
# Via Splash https://github.com/edx/django-splash
# Via Splash https://github.com/openedx/django-splash
splash.SplashConfig:
".. no_pii:": "No PII"
@@ -269,7 +269,7 @@ waffle.Sample:
waffle.Switch:
".. no_pii:": "No PII"
# Via django-wiki https://github.com/edx/django-wiki
# Via django-wiki https://github.com/openedx/django-wiki
wiki.Article:
".. no_pii:": "No PII"
wiki.ArticleForObject:

View File

@@ -2,14 +2,14 @@
# ** DO NOT EDIT THIS FILE **
# ***************************
#
# This file was generated by edx-lint: https://github.com/edx/edx-lint
# This file was generated by edx-lint: https://github.com/openedx/edx-lint
#
# If you want to change this file, you have two choices, depending on whether
# you want to make a local change that applies only to this repo, or whether
# you want to make a central change that applies to all repos using edx-lint.
#
# Note: If your pylintrc file is simply out-of-date relative to the latest
# pylintrc rules in edx-lint, ensure you have the latest edx-lint installed
# Note: If your .editorconfig file is simply out-of-date relative to the latest
# .editorconfig in edx-lint, ensure you have the latest edx-lint installed
# and then follow the steps for a "LOCAL CHANGE".
#
# LOCAL CHANGE:
@@ -28,7 +28,7 @@
# CENTRAL CHANGE:
#
# 1. Edit the .editorconfig file in the edx-lint repo at
# https://github.com/edx/edx-lint/blob/master/edx_lint/files/.editorconfig
# https://github.com/openedx/edx-lint/blob/master/edx_lint/files/.editorconfig
#
# 2. install the updated version of edx-lint (in edx-lint):
#
@@ -36,19 +36,16 @@
#
# 3. Run (in edx-lint):
#
# # uses .editorconfig_tweaks from edx-lint for linting in edx-lint
# # NOTE: Use Python 3.x, which no longer includes comments in the output file
# $ edx_lint write .editorconfig
#
# 4. Make a new version of edx_lint, submit and review a pull request with the
# .editorconfig update, and after merging, update the edx-lint version by
# creating a new tag in the repo (uses pbr).
# .editorconfig update, and after merging, update the edx-lint version and
# publish the new version.
#
# 5. In your local repo, install the newer version of edx-lint.
#
# 6. Run:
#
# # uses local .editorconfig_tweaks
# $ edx_lint write .editorconfig
#
# 7. This will modify the local file. Submit a pull request to get it
@@ -67,7 +64,7 @@
# SERIOUSLY.
#
# ------------------------------
# Generated by edx-lint version: 1.6
# Generated by edx-lint version: 5.3.0
# ------------------------------
[*]
end_of_line = lf
@@ -100,4 +97,4 @@ max_line_length = 72
[*.rst]
max_line_length = 79
# f541be688d5bfddc4fdfc961a52e93edd05bc244
# eecef7d3f7f334de2348fe1b4b0b48d605f7dcab

View File

@@ -11,7 +11,7 @@ Use conventional commits to separate and summarize commits logically:
https://open-edx-proposals.readthedocs.io/en/latest/oep-0051-bp-conventional-commits.html
Use this template as a guide. Omit sections that don't apply. You may link to information rather than copy it.
More details about the template are at https://github.com/edx/open-edx-proposals/pull/180
More details about the template are at https://github.com/openedx/open-edx-proposals/pull/180
(link will be updated when that document merges)
-->

View File

@@ -7,4 +7,4 @@ on:
jobs:
commitlint:
uses: edx/.github/.github/workflows/commitlint.yml@master
uses: openedx/.github/.github/workflows/commitlint.yml@master

View File

@@ -10,4 +10,4 @@ on:
jobs:
version-check:
uses: edx/.github/.github/workflows/lockfileversion-check.yml@master
uses: openedx/.github/.github/workflows/lockfileversion-check.yml@master

View File

@@ -21,5 +21,5 @@ jobs:
requirements_bot_github_email: ${{ secrets.REQUIREMENTS_BOT_GITHUB_EMAIL }}
edx_smtp_username: ${{ secrets.EDX_SMTP_USERNAME }}
edx_smtp_password: ${{ secrets.EDX_SMTP_PASSWORD }}
uses: edx/.github/.github/workflows/upgrade-python-requirements.yml@master
uses: openedx/.github/.github/workflows/upgrade-python-requirements.yml@master

View File

@@ -5,4 +5,4 @@ either the `edX Release Notes`_ or the `GitHub commit history`_.
.. _edX Release Notes: https://edx.readthedocs.io/projects/open-edx-release-notes/en/latest/
.. _GitHub commit history: https://github.com/edx/edx-platform/commits/master
.. _GitHub commit history: https://github.com/openedx/edx-platform/commits/master

View File

@@ -46,7 +46,7 @@ RUN apt-get update && \
libxml2-dev \
libxmlsec1-dev \
libxslt1-dev \
# lynx: Required by https://github.com/edx/edx-platform/blob/b489a4ecb122/openedx/core/lib/html_to_text.py#L16
# lynx: Required by https://github.com/openedx/edx-platform/blob/b489a4ecb122/openedx/core/lib/html_to_text.py#L16
lynx \
ntp \
pkg-config \

View File

@@ -40,7 +40,7 @@ a Docker-based development environment.
If you want to run your own Open edX server and have the technical skills to do
so, `Open edX Installation Options`_ explains your options.
.. _Open edX Developer Stack: https://github.com/edx/devstack
.. _Open edX Developer Stack: https://github.com/openedx/devstack
.. _Open edX Installation Options: https://openedx.atlassian.net/wiki/spaces/OpenOPS/pages/60227779/Open+edX+Installation+Options
License
@@ -49,7 +49,7 @@ License
The code in this repository is licensed under version 3 of the AGPL
unless otherwise noted. Please see the `LICENSE`_ file for details.
.. _LICENSE: https://github.com/edx/edx-platform/blob/master/LICENSE
.. _LICENSE: https://github.com/openedx/edx-platform/blob/master/LICENSE
More about Open edX
@@ -111,4 +111,4 @@ Please do not report security issues in public. Please email
security@edx.org.
.. _individual contributor agreement: https://openedx.org/cla
.. _CONTRIBUTING: https://github.com/edx/edx-platform/blob/master/CONTRIBUTING.rst
.. _CONTRIBUTING: https://github.com/openedx/edx-platform/blob/master/CONTRIBUTING.rst

View File

@@ -20,8 +20,8 @@ JSON-based API for post requests. It also only supports session-based auth. Whil
this works well currently, for MFE consumption this is not ideal. The
`advanced course settings`_ view is in a similar situation.
.. _old-style functional view: https://github.com/edx/edx-platform/blob/49296005db7397e1a45e2864d93d39cf790a5fce/cms/djangoapps/contentstore/views/tabs.py#L27
.. _advanced course settings: https://github.com/edx/edx-platform/blob/49296005db7397e1a45e2864d93d39cf790a5fce/cms/djangoapps/contentstore/views/course.py#L1367
.. _old-style functional view: https://github.com/openedx/edx-platform/blob/49296005db7397e1a45e2864d93d39cf790a5fce/cms/djangoapps/contentstore/views/tabs.py#L27
.. _advanced course settings: https://github.com/openedx/edx-platform/blob/49296005db7397e1a45e2864d93d39cf790a5fce/cms/djangoapps/contentstore/views/course.py#L1367
To avoid disrupting the existing studio views that might still be needed for the next
few releases, we need to maintain these existing views while also enabling MFEs to
@@ -61,4 +61,4 @@ not JSON.
For the short-term though, these APIs will unblock progress on new MFE UX without
without needing to write entirely new APIs.
.. _Course Authoring MFE: https://github.com/edx/frontend-app-course-authoring/
.. _Course Authoring MFE: https://github.com/openedx/frontend-app-course-authoring/

View File

@@ -3,7 +3,7 @@ A backfill command to migrate Open edX instances to the new world of
"organizations are enabled everywhere".
For full context, see:
https://github.com/edx/edx-organizations/blob/master/docs/decisions/0001-phase-in-db-backed-organizations-to-all.rst
https://github.com/openedx/edx-organizations/blob/master/docs/decisions/0001-phase-in-db-backed-organizations-to-all.rst
"""
from typing import Dict, List, Set, Tuple

View File

@@ -774,8 +774,8 @@ class TestLibraryAccess(LibraryTestCase):
"""
Test that user could attach to the problem only libraries that he has access (or which were created by him).
This test was created on the basis of bug described in the pull requests on github:
https://github.com/edx/edx-platform/pull/11331
https://github.com/edx/edx-platform/pull/11611
https://github.com/openedx/edx-platform/pull/11331
https://github.com/openedx/edx-platform/pull/11611
"""
self._create_library(org='admin_org_1', library='lib_adm_1', display_name='admin_lib_1')
self._create_library(org='admin_org_2', library='lib_adm_2', display_name='admin_lib_2')

View File

@@ -19,7 +19,7 @@ In order for CourseGraph to have queryable, up-to-date data, learning content fr
**Please note**: Access to a populated CourseGraph instance confers access to all the learning content in the associated Open edX CMS (Studio). The basic authentication provided by Neo4j may or may not be sufficient for your security needs. Consider taking additional security measures, such as restricting CourseGraph access to only users on a private VPN.
.. _neo4j Ansible playbook: https://github.com/edx/configuration/blob/master/playbooks/neo4j.yml
.. _neo4j Ansible playbook: https://github.com/openedx/configuration/blob/master/playbooks/neo4j.yml
.. _CourseGraph plugin for Tutor: https://github.com/openedx/tutor-contrib-coursegraph/
@@ -58,7 +58,7 @@ Other Devstack CourseGraph commands include::
The above commands should be run in your ``devstack`` folder, and they assume that LMS is already properly provisioned. See the `Devstack interface`_ for more details.
.. _Open edX Devstack: https://github.com/edx/devstack/
.. _Open edX Devstack: https://github.com/openedx/devstack/
.. _Devstack interface: https://edx.readthedocs.io/projects/open-edx-devstack/en/latest/devstack_interface.html

View File

@@ -225,7 +225,7 @@ FEATURES = {
# Open edX Studio. Set to False if you want to disable the editing of the course short description.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2014-02-13
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/2334
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2334
'EDITABLE_SHORT_DESCRIPTION': True,
# Hide any Personally Identifiable Information from application logs
@@ -272,7 +272,7 @@ FEATURES = {
# Studio can be used as an LTI 1.3 tool by external LTI platforms.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2021-08-17
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/27411
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/27411
'ENABLE_CONTENT_LIBRARIES_LTI_TOOL': False,
# Milestones application flag
@@ -304,7 +304,7 @@ FEATURES = {
# the studio home page.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-02-13
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/6965
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6965
'ALLOW_COURSE_RERUNS': True,
# Certificates Web/HTML Views
@@ -380,7 +380,7 @@ FEATURES = {
# page else Mobile Course Available UI Flag will be available on Studio side.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2020-02-14
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/23073
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/23073
'DISABLE_MOBILE_COURSE_AVAILABLE': False,
# .. toggle_name: FEATURES['ENABLE_CHANGE_USER_PASSWORD_ADMIN']
@@ -390,7 +390,7 @@ FEATURES = {
# default because enabling allows a method to bypass password policy.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2020-02-21
# .. toggle_tickets: 'https://github.com/edx/edx-platform/pull/21616'
# .. toggle_tickets: 'https://github.com/openedx/edx-platform/pull/21616'
'ENABLE_CHANGE_USER_PASSWORD_ADMIN': False,
### ORA Feature Flags ###
@@ -466,7 +466,7 @@ FEATURES = {
# .. toggle_description: When True, a help link is displayed on the main navbar. Set False to hide it.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2021-03-05
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/26106
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/26106
'ENABLE_HELP_LINK': True,
# .. toggle_name: FEATURES['ENABLE_V2_CERT_DISPLAY_SETTINGS']
@@ -500,7 +500,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2022-03-22
# .. toggle_target_removal_date: None
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/28268
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/28268
# .. toggle_warning: For consistency in user-experience, keep the value in sync with the setting of the same name
# in the LMS and CMS.
'MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW': False,
@@ -1075,7 +1075,7 @@ DEFAULT_HASHING_ALGORITHM = 'sha1'
#################### Python sandbox ############################################
CODE_JAIL = {
# from https://github.com/edx/codejail/blob/master/codejail/django_integration.py#L24, '' should be same as None
# from https://github.com/openedx/codejail/blob/master/codejail/django_integration.py#L24, '' should be same as None
'python_bin': '/edx/app/edxapp/venvs/edxapp-sandbox/bin/python',
# User to run as in the sandbox.
'user': 'sandbox',
@@ -1758,7 +1758,7 @@ INSTALLED_APPS = [
# Learning Sequence Navigation
'openedx.core.djangoapps.content.learning_sequences.apps.LearningSequencesConfig',
# Database-backed Organizations App (http://github.com/edx/edx-organizations)
# Database-backed Organizations App (http://github.com/openedx/edx-organizations)
'organizations',
# User and group management via edx-django-utils
@@ -1905,7 +1905,7 @@ OPTIONAL_APPS = (
# edxval
('edxval', 'openedx.core.djangoapps.content.course_overviews.apps.CourseOverviewsConfig'),
# Enterprise App (http://github.com/edx/edx-enterprise)
# Enterprise App (http://github.com/openedx/edx-enterprise)
('enterprise', None),
('consent', None),
('integrated_channels.integrated_channel', None),
@@ -2650,7 +2650,7 @@ VERIFY_STUDENT = {
# the orgs referenced in Studio content, then leave it enabled.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2020-11-02
# .. toggle_tickets: https://github.com/edx/edx-organizations/blob/master/docs/decisions/0001-phase-in-db-backed-organizations-to-all.rst
# .. toggle_tickets: https://github.com/openedx/edx-organizations/blob/master/docs/decisions/0001-phase-in-db-backed-organizations-to-all.rst
ORGANIZATIONS_AUTOCREATE = True
################# Settings for brand logos. #################

View File

@@ -15,7 +15,7 @@
# a devstack.py at all.
#
# This is part of the effort to move our dev tools off of Ansible and
# Paver, described here: https://github.com/edx/devstack/pull/866
# Paver, described here: https://github.com/openedx/devstack/pull/866
# TODO: If the effort described above is abandoned, then this file should
# probably be deleted.
ACTIVATION_EMAIL_SUPPORT_LINK: ''

View File

@@ -1,7 +1,7 @@
from django.db import migrations, models
# We used to have a uniqueness constraint on auth_user.email:
# https://github.com/edx/edx-platform/commit/c52727b0e0fb241d8211900975d3b69fe5a1bd57
# https://github.com/openedx/edx-platform/commit/c52727b0e0fb241d8211900975d3b69fe5a1bd57
#
# That constraint was lost in the upgrade from Django 1.4->1.8. This migration
# adds it back. But because it might already exist in databases created

View File

@@ -58,7 +58,7 @@ User = get_user_model() # pylint:disable=invalid-name
# makes DB queries that could cause site outages for a large enough Open edX installation.
# .. toggle_use_cases: opt_in, open_edx
# .. toggle_creation_date: 2018-08-01
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/18638
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/18638
COURSE_ENROLLMENT_ADMIN_SWITCH = WaffleSwitch('student.courseenrollment_admin', __name__)

View File

@@ -27,7 +27,7 @@ REQUEST_CACHE_NAME = "milestones"
# .. toggle_implementation: SettingDictToggle
# .. toggle_default: False
# .. toggle_description: Enable the milestones application, which manages significant Course and/or Student events in
# the Open edX platform. (see https://github.com/edx/edx-milestones) Note that this feature is required to enable
# the Open edX platform. (see https://github.com/openedx/edx-milestones) Note that this feature is required to enable
# course pre-requisites.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2014-11-21

View File

@@ -1,6 +1,6 @@
# This file is used by the 'check_reserved_keywords' management command to allow specific field names to be overridden
# when checking for conflicts with lists of restricted keywords used in various database/data warehouse tools.
# For more information, see: https://github.com/edx/edx-django-release-util/release_util/management/commands/check_reserved_keywords.py
# For more information, see: https://github.com/openedx/edx-django-release-util/release_util/management/commands/check_reserved_keywords.py
#
# overrides should be added in the following format:
# - ModelName.field_name

View File

@@ -20,7 +20,7 @@ In the LMS, the following technologies can be used to access course content and
* `Modulestore`_ - Contains all course related data, including course metadata, course blocks, and student module data. `Course Overviews`_ and `Course Blocks`_ are performant read-optimized versions of subsets of data in the Modulestore.
.. _edX DDD Ubiquitous Language: https://openedx.atlassian.net/wiki/spaces/AC/pages/188032048/edX+DDD+Ubiquitous+Language
.. _Course Overviews: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/content/course_overviews/__init__.py
.. _Course Overviews: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/content/course_overviews/__init__.py
.. _Course Blocks: https://openedx.atlassian.net/wiki/display/EDUCATOR/Course+Blocks
.. _Modulestore: https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/modulestores/index.html
@@ -54,16 +54,16 @@ If you need to combine user data with `Course Blocks`_ data, load the users's da
**Example**: See `example loading the student module data`_ in the course outline feature.
.. _example use of course overviews: https://github.com/edx/edx-platform/blob/f81c21902eb0e8d026612b052557142ce1527153/openedx/features/course_experience/views/course_outline.py#L26
.. _example of using course blocks: https://github.com/edx/edx-platform/blob/f81c21902eb0e8d026612b052557142ce1527153/openedx/features/course_experience/utils.py#L65-L72
.. _example loading the student module data: https://github.com/edx/edx-platform/blob/f81c21902eb0e8d026612b052557142ce1527153/openedx/features/course_experience/utils.py#L49
.. _example use of course overviews: https://github.com/openedx/edx-platform/blob/f81c21902eb0e8d026612b052557142ce1527153/openedx/features/course_experience/views/course_outline.py#L26
.. _example of using course blocks: https://github.com/openedx/edx-platform/blob/f81c21902eb0e8d026612b052557142ce1527153/openedx/features/course_experience/utils.py#L65-L72
.. _example loading the student module data: https://github.com/openedx/edx-platform/blob/f81c21902eb0e8d026612b052557142ce1527153/openedx/features/course_experience/utils.py#L49
Tech Debt
=========
At this time, `LMS courseware rendering`_ still uses the `Modulestore`_ instead of `Course Blocks`_. This is technical debt that needs to be addressed, so we can have a fuller separation between the storage systems.
.. _LMS courseware rendering: https://github.com/edx/edx-platform/blob/67008cec68806b77631e8c40ede98ace8a83ce4f/lms/djangoapps/courseware/module_render.py#L291
.. _LMS courseware rendering: https://github.com/openedx/edx-platform/blob/67008cec68806b77631e8c40ede98ace8a83ce4f/lms/djangoapps/courseware/module_render.py#L291
Consequences
============

View File

@@ -40,7 +40,7 @@ Exmaples
As a reference example, see the Python APIs exposed by the grades app in the
`grades/api.py module`_.
.. _`grades/api.py module`: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/grades/api.py
.. _`grades/api.py module`: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/grades/api.py
Consequences

View File

@@ -61,7 +61,7 @@ Experiment Results
Bokchoy tests were disabled for PRs for 3 weeks. In that time only one change went out that was not caught by other test suites. The change in question did not impact edx.org and was specific how configuration is read into the system. The bokchoy tests did not detect any other failures that were not caught by other tests. The `PR` where we monitored Bokchoy daily has more specific details.
.. _PR: https://github.com/edx/edx-platform/pull/23682
.. _PR: https://github.com/openedx/edx-platform/pull/23682
Decision
========

View File

@@ -47,7 +47,7 @@ more explicit, we don't want to take on that work now as it may increase
complexity.
.. _OEP-45: https://github.com/edx/open-edx-proposals/pull/143/files
.. _OEP-45: https://github.com/openedx/open-edx-proposals/pull/143/files
Consequences
============

View File

@@ -110,5 +110,5 @@ how and when we should be using different libraries.
.. _django-ratelimit: https://django-ratelimit.readthedocs.io/en/stable/usage.html#usage-chapter
.. _django-ratelimit-backend: https://django-ratelimit-backend.readthedocs.io/en/latest/
.. _djangorestframework rate limiting: https://www.django-rest-framework.org/api-guide/throttling/
.. _MAX_FAILED_LOGIN_ATTEMPTS: https://github.com/edx/edx-platform/blob/cd6064692681ab99912e3da3721cd857a0b313e9/common/djangoapps/student/models.py#L980
.. _MAX_FAILED_LOGIN_ATTEMPTS: https://github.com/openedx/edx-platform/blob/cd6064692681ab99912e3da3721cd857a0b313e9/common/djangoapps/student/models.py#L980
.. _cloudflare rate limiting: https://www.cloudflare.com/rate-limiting/

View File

@@ -91,7 +91,7 @@ Most python plugins are enabled using one of two methods:
2. A Django setting: Some plugins require modification of Django settings, which is typically done by editing ``/edx/etc/lms.yml`` (in Production) or ``edx-platform/lms/envs/private.py`` (on Devstack).
.. |edx_django_utils.plugins| replace:: ``edx_django_utils.plugins``
.. _edx_django_utils.plugins: https://github.com/edx/edx-django-utils/blob/master/edx_django_utils/plugins
.. _edx_django_utils.plugins: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins
.. _stevedore: https://pypi.org/project/stevedore/
Here are the different integration points that python plugins can use:
@@ -145,21 +145,21 @@ Here are the different integration points that python plugins can use:
- Filters are also part of Hooks Extension Framework for open extension of edx-platform. Filters are a flexible way for plugin developers to modify learner or author application flows. They are defined by a `separate filters library`_ that developers can include in their requirements to develop and test the code without creating a dependency on this large repo. For more information see the `hooks guide`_.
.. _Application: https://docs.djangoproject.com/en/3.0/ref/applications/
.. _Django app plugin documentation: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/plugins/README.rst
.. _Plugin Contexts: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/plugins/docs/decisions/0003-plugin-contexts.rst
.. _Django app plugin documentation: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/plugins/README.rst
.. _Plugin Contexts: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/plugins/docs/decisions/0003-plugin-contexts.rst
.. _course tabs documentation: https://openedx.atlassian.net/wiki/spaces/AC/pages/30965919/Adding+a+new+course+tab
.. |course_tools.py| replace:: ``course_tools.py``
.. _course_tools.py: https://github.com/edx/edx-platform/blob/master/openedx/features/course_experience/course_tools.py
.. _course_tools.py: https://github.com/openedx/edx-platform/blob/master/openedx/features/course_experience/course_tools.py
.. _Adding Custom Fields to the Registration Page: https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/customize_registration_page.html
.. |learning_context.py| replace:: ``learning_context.py``
.. _learning_context.py: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/xblock/learning_context/learning_context.py
.. _learning_context.py: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/xblock/learning_context/learning_context.py
.. |UserPartition docstring| replace:: ``UserPartition`` docstring
.. _UserPartition docstring: https://github.com/edx/edx-platform/blob/f8cc58618a39c9f7b8e9e1001eb2d7a10395797e/common/lib/xmodule/xmodule/partitions/partitions.py#L105-L120
.. _UserPartition docstring: https://github.com/openedx/edx-platform/blob/f8cc58618a39c9f7b8e9e1001eb2d7a10395797e/common/lib/xmodule/xmodule/partitions/partitions.py#L105-L120
.. |pluggable_override docstring| replace:: ``pluggable_override`` docstring
.. _pluggable_override docstring: https://github.com/edx/edx-django-utils/blob/master/edx_django_utils/plugins/pluggable_override.py
.. _pluggable_override docstring: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/pluggable_override.py
.. _separate events library: https://github.com/eduNEXT/openedx-events/
.. _separate filters library: https://github.com/eduNEXT/openedx-filters/
.. _hooks guide: https://github.com/edx/edx-platform/blob/master/docs/guides/hooks/index.rst
.. _hooks guide: https://github.com/openedx/edx-platform/blob/master/docs/guides/hooks/index.rst
Platform Look & Feel
====================
@@ -186,7 +186,7 @@ Methods for theming MFEs are still being developed. It is likely to involve:
In addition, Open edX operators will be able to replace entire MFEs with completely custom MFE implementations that use the same backend APIs.
.. |example edx theme| replace:: example ``edx`` theme
.. _example edx theme: https://github.com/edx/paragon/tree/master/scss/edx
.. _example edx theme: https://github.com/openedx/paragon/tree/master/scss/edx
.. _Changing Themes for an Open edX Site: https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/changing_appearance/theming/
.. _Overriding Brand Specific Elements: https://edx.readthedocs.io/projects/edx-developer-docs/en/latest/developers_guide/micro_frontends_in_open_edx.html#overriding-brand-specific-elements
@@ -195,4 +195,4 @@ Custom frontends
*Status: Trial, Limited*
If you need a *very* custom look and feel for your users, and you have the time and resources required for a huge project, you can consider creating a custom frontend for Open edX, which is a completely separate application that runs on its own domain and integrates with Open edX using REST APIs. The edX Mobile App can be thought of as an example of a separate frontend that connects to Open edX using only REST APIs. Another example is `LabXchange <https://www.labxchange.org/>`_. If you develop your custom frontend using Django, you may wish to use the `auth-backends <https://github.com/edx/auth-backends>`_ django plugin for user authentication.
If you need a *very* custom look and feel for your users, and you have the time and resources required for a huge project, you can consider creating a custom frontend for Open edX, which is a completely separate application that runs on its own domain and integrates with Open edX using REST APIs. The edX Mobile App can be thought of as an example of a separate frontend that connects to Open edX using only REST APIs. Another example is `LabXchange <https://www.labxchange.org/>`_. If you develop your custom frontend using Django, you may wish to use the `auth-backends <https://github.com/openedx/auth-backends>`_ django plugin for user authentication.

View File

@@ -62,4 +62,4 @@ Here's an example:
- Normal
- Secondary
.. _guide on installing the plugins through the edX configuration: https://github.com/edx/configuration/blob/master/playbooks/roles/tinymce_plugins/README.rst
.. _guide on installing the plugins through the edX configuration: https://github.com/openedx/configuration/blob/master/playbooks/roles/tinymce_plugins/README.rst

View File

@@ -140,39 +140,39 @@ well as the trigger location in this same repository.
* - `STUDENT_REGISTRATION_COMPLETED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L24>`_
- org.openedx.learning.student.registration.completed.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/user_authn/views/register.py#L262>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/user_authn/views/register.py#L262>`_
* - `SESSION_LOGIN_COMPLETED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L36>`_
- org.openedx.learning.auth.session.login.completed.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/user_authn/views/login.py#L320>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/user_authn/views/login.py#L320>`_
* - `COURSE_ENROLLMENT_CREATED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L48>`_
- org.openedx.learning.course.enrollment.created.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/common/djangoapps/student/models.py#L1671>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/common/djangoapps/student/models.py#L1671>`_
* - `COURSE_ENROLLMENT_CHANGED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L60>`_
- org.openedx.learning.course.enrollment.changed.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/common/djangoapps/student/models.py#L1430>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/common/djangoapps/student/models.py#L1430>`_
* - `COURSE_UNENROLLMENT_COMPLETED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L72>`_
- org.openedx.learning.course.unenrollment.completed.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/common/djangoapps/student/models.py#L1457>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/common/djangoapps/student/models.py#L1457>`_
* - `CERTIFICATE_CREATED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L84>`_
- org.openedx.learning.certificate.created.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/lms/djangoapps/certificates/models.py#L514>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/certificates/models.py#L514>`_
* - `CERTIFICATE_CHANGED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L94>`_
- org.openedx.learning.certificate.changed.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/lms/djangoapps/certificates/models.py#L482>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/certificates/models.py#L482>`_
* - `CERTIFICATE_REVOKED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L108>`_
- org.openedx.learning.certificate.revoked.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/lms/djangoapps/certificates/models.py#L402>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/certificates/models.py#L402>`_
* - `COHORT_MEMBERSHIP_CHANGED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L120>`_
- org.openedx.learning.cohort_membership.changed.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/course_groups/models.py#L166>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/course_groups/models.py#L166>`_
* - `COURSE_DISCUSSIONS_CHANGED <https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/learning/signals.py#L132>`_
- org.openedx.learning.discussions.configuration.changed.v1

View File

@@ -148,11 +148,11 @@ well as the trigger location in this same repository.
* - `StudentLoginRequested <https://github.com/eduNEXT/openedx-filters/blob/main/openedx_filters/learning/filters.py#L40>`_
- org.openedx.learning.student.login.requested.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/user_authn/views/login.py#L569>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/user_authn/views/login.py#L569>`_
* - `CourseEnrollmentStarted <https://github.com/eduNEXT/openedx-filters/blob/main/openedx_filters/learning/filters.py#L70>`_
- org.openedx.learning.course.enrollment.started.v1
- `2022-06-14 <https://github.com/edx/edx-platform/blob/master/common/djangoapps/student/models.py#L1675>`_
- `2022-06-14 <https://github.com/openedx/edx-platform/blob/master/common/djangoapps/student/models.py#L1675>`_
* - `CourseUnenrollmentStarted <https://github.com/eduNEXT/openedx-filters/blob/main/openedx_filters/learning/filters.py#L98>`_
- org.openedx.learning.course.unenrollment.started.v1

View File

@@ -16,7 +16,7 @@ locations.
edX ReadTheDocs`_. The source for these guides can be found in the
`edx-documentation`_ repository.
.. _edx-platform docs directory: https://github.com/edx/edx-platform/tree/master/docs
.. _edx-platform docs directory: https://github.com/openedx/edx-platform/tree/master/docs
.. _Developer Documentation Index: https://openedx.atlassian.net/wiki/display/OpenDev/Developer+Documentation
.. _Open edX Development space: https://openedx.atlassian.net/wiki/spaces/OpenDev/overview
.. _Open edX ReadTheDocs: http://docs.edx.org/
@@ -44,4 +44,4 @@ Change History
* November 3, 2014: The documentation for several sub-projects were moved into
`edx-documentation`_.
.. _edx-documentation: https://github.com/edx/edx-documentation
.. _edx-documentation: https://github.com/openedx/edx-documentation

View File

@@ -223,7 +223,7 @@ run one of these commands::
paver test_system -s cms -t common/djangoapps/terrain/stubs/tests/test_youtube_stub.py
pytest common/djangoapps/terrain/stubs/tests/test_youtube_stub.py
.. _YouTube stub server: https://github.com/edx/edx-platform/blob/master/common/djangoapps/terrain/stubs/tests/test_youtube_stub.py
.. _YouTube stub server: https://github.com/openedx/edx-platform/blob/master/common/djangoapps/terrain/stubs/tests/test_youtube_stub.py
Debugging Unittest Flakiness

View File

@@ -5517,7 +5517,7 @@ paths:
that a user has for course-runs within a given program.
Fields included are the title, upcoming due dates, etc.
This API endpoint is intended for use with the
[Program Learner Portal MFE](https://github.com/edx/frontend-app-learner-portal-programs).
[Program Learner Portal MFE](https://github.com/openedx/frontend-app-learner-portal-programs).
It is important to note that the set of enrollments that this endpoint returns
is different than a user's set of *program-course-run enrollments*.

View File

@@ -19,7 +19,7 @@ extensions = ["code_annotations.contrib.sphinx.extensions.featuretoggles", "code
templates_path = ["_templates"]
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
edxplatform_repo_url = "https://github.com/edx/edx-platform"
edxplatform_repo_url = "https://github.com/openedx/edx-platform"
edxplatform_source_path = os.path.abspath(
os.path.join(os.path.dirname(__file__), "..", "..")
)

View File

@@ -15,7 +15,7 @@ Certificates related functionality is scattered across a number of places and sh
Ideally, we want to extract these into the `credentials service`_, which would be ultimately responsible for Course-Run and Program certificates (and possibly other credentials). Right now, the `credentials service`_ only manages Program certificates.
.. _credentials service: https://github.com/edx/credentials
.. _credentials service: https://github.com/openedx/credentials
Glossary
========

View File

@@ -118,8 +118,8 @@ Related DEPR (edX deprecation process) tickets:
* `Remove PDF view code`_
.. _Enable Course Certificates: https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/enable_certificates.html
.. _Deprecate web certificate setting: https://github.com/edx/edx-platform/pull/17285
.. _Disable PDF certificate generation: https://github.com/edx/edx-platform/pull/19833
.. _Deprecate web certificate setting: https://github.com/openedx/edx-platform/pull/17285
.. _Disable PDF certificate generation: https://github.com/openedx/edx-platform/pull/19833
.. _Set Up Certificates in Studio: https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/set_up_course/studio_add_course_information/studio_creating_certificates.html
.. _Remove PDF generation code: https://openedx.atlassian.net/browse/DEPR-155
.. _Remove PDF view code: https://openedx.atlassian.net/browse/DEPR-157

View File

@@ -64,4 +64,4 @@ The date override data (if present) will be included in the post to
`Credentials`_ whenever this signal is called. Credentials will save and use
this data for the Program Record page.
.. _Credentials: https://github.com/edx/credentials
.. _Credentials: https://github.com/openedx/credentials

View File

@@ -8,7 +8,7 @@ Direction: Deprecate
====================
This app is replaced by functionality in the `ecommerce service`_. New functionality should not be added here. Effort is needed to determine who the existing clients are so they can be updated and this app can be removed. This app is in a similar situation to the ```lms/djangoapps/shoppingcart``` app.
.. _ecommerce service: https://github.com/edx/ecommerce
.. _ecommerce service: https://github.com/openedx/ecommerce
Glossary
========

View File

@@ -93,7 +93,7 @@ def get_blocks(
else:
transformers += [course_blocks_api.visibility.VisibilityTransformer()]
# Note: A change to the BlockCompletionTransformer (https://github.com/edx/edx-platform/pull/27622/)
# Note: A change to the BlockCompletionTransformer (https://github.com/openedx/edx-platform/pull/27622/)
# will be introducing a bug if hide_access_denials is True. I'm accepting this risk because in
# the AccessDeniedMessageFilterTransformer, there is note about deleting it and I believe it is
# technically deprecated functionality. The only use case where hide_access_denials is True

View File

@@ -10,4 +10,4 @@ Glossary
More Documentation
==================
`Architectural Decision Records
<https://github.com/edx/edx-platform/tree/master/lms/djangoapps/courseware/docs/decisions>`_
<https://github.com/openedx/edx-platform/tree/master/lms/djangoapps/courseware/docs/decisions>`_

View File

@@ -23,8 +23,8 @@ new ``CourseModes`` with similar but not identical permissions requires
numerous distributed code changes.
.. _OEP-9: https://open-edx-proposals.readthedocs.io/en/latest/oep-0009-bp-permissions.html
.. _CourseMode: https://github.com/edx/edx-platform/blob/master/common/djangoapps/course_modes/models.py#L37
.. _edx-platform: https://github.com/edx/edx-platform
.. _CourseMode: https://github.com/openedx/edx-platform/blob/master/common/djangoapps/course_modes/models.py#L37
.. _edx-platform: https://github.com/openedx/edx-platform
~~~~~~~~
Decision
@@ -87,7 +87,7 @@ Finally, we need to make sure that ``__invert__`` doesn't lose error
messages (https://github.com/dfunckt/django-rules/blob/master/rules/predicates.py#L173)
.. _django-rules: https://github.com/dfunckt/django-rules
.. _AccessResponse: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/courseware/access_response.py#L10
.. _AccessResponse: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/courseware/access_response.py#L10
.. _Predicate: https://github.com/dfunckt/django-rules/blob/master/rules/predicates.py#L47
Convert built-in predicates to non-boolean predicates in edx-platform
@@ -122,7 +122,7 @@ and can be parallelized. However, at present, there are ~150 calls to
`has_access`_ in edx-platform, so this is not an insignificant amount of
work.
.. _has_access: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/courseware/access.py#L103
.. _has_access: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/courseware/access.py#L103
.. _user.has_perm: https://docs.djangoproject.com/en/2.1/ref/contrib/auth/#django.contrib.auth.models.User.has_perm
Refactor contents of ``has_access``
@@ -169,7 +169,7 @@ It will also allow those conditions (predicates) to be written in
a location that is central to the app they are responsible for, rather
than requiring that they be added to `access.py`_.
.. _access.py: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/courseware/access.py
.. _access.py: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/courseware/access.py
When the conversion of `CourseMode`_ membership checks has been completed,
it will be easier to add new `CourseMode`_ types with similar permissions

View File

@@ -33,8 +33,8 @@ to the plan in `0002`_.
We will update all uses of `has_access`_, and all `CourseMode`_ membership
checks, to use `bridgekeeper`_ and named permissions.
.. _`0002. Use django-rules for Permissions and Tracks`: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/courseware/docs/decisions/0002-permissions-via-django-rules.rst
.. _`0002`: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/courseware/docs/decisions/0002-permissions-via-django-rules.rst
.. _`0002. Use django-rules for Permissions and Tracks`: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/courseware/docs/decisions/0002-permissions-via-django-rules.rst
.. _`0002`: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/courseware/docs/decisions/0002-permissions-via-django-rules.rst
Plan of Action
==============
@@ -88,7 +88,7 @@ and can be parallelized. However, at present, there are ~150 calls to
`has_access`_ in edx-platform, so this is not an insignificant amount of
work.
.. _has_access: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/courseware/access.py#L103
.. _has_access: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/courseware/access.py#L103
.. _user.has_perm: https://docs.djangoproject.com/en/2.1/ref/contrib/auth/#django.contrib.auth.models.User.has_perm
Refactor contents of ``has_access``
@@ -135,7 +135,7 @@ It will also allow those conditions (predicates) to be written in
a location that is central to the app they are responsible for, rather
than requiring that they be added to `access.py`_.
.. _access.py: https://github.com/edx/edx-platform/blob/master/lms/djangoapps/courseware/access.py
.. _access.py: https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/courseware/access.py
When the conversion of `CourseMode`_ membership checks has been completed,
it will be easier to add new `CourseMode`_ types with similar permissions

View File

@@ -911,7 +911,7 @@ def handle_xblock_callback(request, course_id, usage_id, handler, suffix=None):
# We are reusing DRF logic to provide support for JWT and Oauth2. We abandoned the idea of using DRF view here
# to avoid introducing backwards-incompatible changes.
# You can see https://github.com/edx/XBlock/pull/383 for more details.
# You can see https://github.com/openedx/XBlock/pull/383 for more details.
else:
authentication_classes = (JwtAuthentication, BearerAuthenticationAllowInactiveUser)
authenticators = [auth() for auth in authentication_classes]

View File

@@ -9,7 +9,7 @@ def plugin_settings(settings):
# .. toggle_description: If True, it adds an option to show/hide the discussions tab.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-06-15
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/8474
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/8474
settings.FEATURES['ALLOW_HIDING_DISCUSSION_TAB'] = False
settings.DISCUSSION_SETTINGS = {
'MAX_COMMENT_DEPTH': 2,

View File

@@ -10,7 +10,7 @@ Notes needs to insert a new tab into the LMS courseware, as well as wrap/decorat
This app is also currently proxying some requests through the LMS instead of hitting its service endpoint directly. It should instead always let the user's browser hit the edx-notes-api service directly.
The edxnotes app also has an endpoint to get JWT tokens that the edx-notes-api will accept. This should be removed, and the edx-notes-api service converted to use the OAuth2 + JWT Cookie approach detailed in the `Transport JWT in HTTP Cookies <https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0009-jwt-in-session-cookie.rst>`_ decision record for ``oauth_dispatch``.
The edxnotes app also has an endpoint to get JWT tokens that the edx-notes-api will accept. This should be removed, and the edx-notes-api service converted to use the OAuth2 + JWT Cookie approach detailed in the `Transport JWT in HTTP Cookies <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0009-jwt-in-session-cookie.rst>`_ decision record for ``oauth_dispatch``.
Glossary
========

View File

@@ -20,4 +20,4 @@ More Documentation
`Architecture <https://openedx.atlassian.net/wiki/spaces/AC/pages/159458764/Grades+Architecture>`_
`Decisions <https://github.com/edx/edx-platform/tree/master/lms/djangoapps/grades/docs/decisions>`_
`Decisions <https://github.com/openedx/edx-platform/tree/master/lms/djangoapps/grades/docs/decisions>`_

View File

@@ -20,7 +20,7 @@ LOG_PREFIX = 'Grades: '
# .. toggle_description: When enabled, a change in grading policy will not trigger re-grading.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2017-08-03
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/15733
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15733
DISABLE_REGRADE_ON_POLICY_CHANGE = WaffleSwitch(f'{WAFFLE_NAMESPACE}.disable_regrade_on_policy_change', __name__)
# Course Flags
@@ -32,7 +32,7 @@ DISABLE_REGRADE_ON_POLICY_CHANGE = WaffleSwitch(f'{WAFFLE_NAMESPACE}.disable_reg
# in edx-platform, but only in edx-proctoring.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2019-05-29
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/20719
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/20719
# TODO: After removing this flag, add a migration to remove waffle flag in a follow-up deployment.
REJECTED_EXAM_OVERRIDES_GRADE = CourseWaffleFlag(
f'{WAFFLE_NAMESPACE}.rejected_exam_overrides_grade', __name__, LOG_PREFIX
@@ -44,7 +44,7 @@ REJECTED_EXAM_OVERRIDES_GRADE = CourseWaffleFlag(
# is only valid for courses which actually have an end date.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2018-10-01
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/19026
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/19026
# TODO: After removing this flag, add a migration to remove waffle flag in a follow-up deployment.
ENFORCE_FREEZE_GRADE_AFTER_COURSE_END = CourseWaffleFlag(
f'{WAFFLE_NAMESPACE}.enforce_freeze_grade_after_course_end', __name__, LOG_PREFIX
@@ -57,7 +57,7 @@ ENFORCE_FREEZE_GRADE_AFTER_COURSE_END = CourseWaffleFlag(
# the writable gradebook is added to the instructor dashboard.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2018-10-03
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/19054
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/19054
# .. toggle_warning: Enabling this requires that the `WRITABLE_GRADEBOOK_URL` setting be properly defined.
# TODO: After removing this flag, add a migration to remove waffle flag in a follow-up deployment.
WRITABLE_GRADEBOOK = CourseWaffleFlag(f'{WAFFLE_NAMESPACE}.writable_gradebook', __name__, LOG_PREFIX)
@@ -69,7 +69,7 @@ WRITABLE_GRADEBOOK = CourseWaffleFlag(f'{WAFFLE_NAMESPACE}.writable_gradebook',
# as we understand, this feature is now unused and obsolete.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2019-08-20
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/21389
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/21389
BULK_MANAGEMENT = CourseWaffleFlag(f'{WAFFLE_NAMESPACE}.bulk_management', __name__, LOG_PREFIX)

View File

@@ -25,7 +25,7 @@ Terminology
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Assignment-Type Grade | Aggregated grade for an assignment category, like Homework or Final. Grading can be configured to drop the lowest n assignments when calculating an assignment-type grade - otherwise all assignments count equally (i.e. there is no weighting of assignments within an assignment category). The course grading policy specifies the minimum number of assignments expected for each category in advance. |
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Overall Percentage | Float value between 0 and 1 that marks the student's percentage for the course. This is calculated by weighing each assignment-type according to the rules specified in CourseDescriptor.grader. The grader is an `extensible interface <https://github.com/edx/edx-platform/blob/master/xmodule/graders.py#L109>`_, but the only rules currently used in practice are simple weight by assignment-type (e.g. 30% Final, 40% HW, etc.). The grader will return the actual percentage as a value between 0 and 1. The overall grade calculation process will then take this number and do a small bit of rounding up: round(actual_percent * 100 + 0.05) / 100. This is so that someone who has been scoring an 89.5% and has been seeing their average rounded to 90% on the progress page is not suddenly surprised at the end of the course. The denominator for this is based on the total possible at the end of the course, and does not adjust for unreleased assignments getting a perfect score on your first homework may only give you a 4% overall percentage. |
| Overall Percentage | Float value between 0 and 1 that marks the student's percentage for the course. This is calculated by weighing each assignment-type according to the rules specified in CourseDescriptor.grader. The grader is an `extensible interface <https://github.com/openedx/edx-platform/blob/master/xmodule/graders.py#L109>`_, but the only rules currently used in practice are simple weight by assignment-type (e.g. 30% Final, 40% HW, etc.). The grader will return the actual percentage as a value between 0 and 1. The overall grade calculation process will then take this number and do a small bit of rounding up: round(actual_percent * 100 + 0.05) / 100. This is so that someone who has been scoring an 89.5% and has been seeing their average rounded to 90% on the progress page is not suddenly surprised at the end of the course. The denominator for this is based on the total possible at the end of the course, and does not adjust for unreleased assignments getting a perfect score on your first homework may only give you a 4% overall percentage. |
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Overall Grade | Letter grade based on CourseDescriptor.grade_cutoffs and the Overall Percentage (so after rounding up). |
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -34,11 +34,11 @@ Terminology
| Courseware | The Django model that XBlocks use to store their student state. Raw scores are also stored here. There are many legacy artifacts in this model, so please read the `documentation <http://edx.readthedocs.org/projects/devdata/en/latest/internal_data_formats/sql_schema.html#courseware-progress-data>`_ if you're going to work with it. The vast majority of scores in the system are stored here. |
| StudentModule | |
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| `Submissions API <https://github.com/edx/edx-submissions>`_ | A newer API created to store submissions and scores separately from XBlock state. The long term goals were to make a more auditable, performant, and flexible scoring system. Scores and submissions are immutable (you never edit old entries, just create new ones). Because it is not derived from XBlock state, it is also possible to later record scores for more abstract things like "class participation", though that functionality is not presently used. This API is relatively new and few things use it. |
| `Submissions API <https://github.com/openedx/edx-submissions>`_ | A newer API created to store submissions and scores separately from XBlock state. The long term goals were to make a more auditable, performant, and flexible scoring system. Scores and submissions are immutable (you never edit old entries, just create new ones). Because it is not derived from XBlock state, it is also possible to later record scores for more abstract things like "class participation", though that functionality is not presently used. This API is relatively new and few things use it. |
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Modulestore | The interface that we use to instantiate XBlocks in edx-platform. Content is loaded from MongoDB as part of this process. |
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Block Structures | An extensible framework for caching xBlock data from the modulestore and storing it in a denormalized read-optimized form. See the `BlockStructure Readme <https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/content/block_structure/__init__.py>`_ for more information. |
| Block Structures | An extensible framework for caching xBlock data from the modulestore and storing it in a denormalized read-optimized form. See the `BlockStructure Readme <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/content/block_structure/__init__.py>`_ for more information. |
+-------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Course Structure in context of Grading
@@ -48,7 +48,7 @@ xBlocks
^^^^^^^
The edX course is built as a hierarchical structure of `xBlocks <https://open.edx.org/xblocks>`_ as recursive compositional building blocks. In the context of grading, the following xBlocks are of particular interest:
* All scorable "xblocks" (optionally using `Scorable xBlock Mixin <https://github.com/edx/XBlock/blob/master/xblock/scorable.py>`_)
* All scorable "xblocks" (optionally using `Scorable xBlock Mixin <https://github.com/openedx/XBlock/blob/master/xblock/scorable.py>`_)
- with has_score=True, as designated by the xBlock developer
@@ -89,7 +89,7 @@ Assignment Weights
Computation
* Although the platform provides support for custom `course graders <https://github.com/edx/edx-platform/blob/master/xmodule/graders.py#L115>`_, in practice, only the computation described here is used, as implemented by the `WeightedSubsectionsGrader <https://github.com/edx/edx-platform/blob/master/xmodule/graders.py#L164>`_.
* Although the platform provides support for custom `course graders <https://github.com/openedx/edx-platform/blob/master/xmodule/graders.py#L115>`_, in practice, only the computation described here is used, as implemented by the `WeightedSubsectionsGrader <https://github.com/openedx/edx-platform/blob/master/xmodule/graders.py#L164>`_.
* The overall grade is the weighted sum of all assignment types in the course, allowing for droppable assignments.
- Which subsections to drop are determined only after calculating each subsection's grade, as only the ones with the lowest grades are dropped.

View File

@@ -1,7 +1,7 @@
Code
----
The Grades code currently lives in a `django app within edx-platform. <https://github.com/edx/edx-platform/tree/master/lms/djangoapps/grades>`_ Long-term, it's possible for the Grades project to be in its own repo. However, currently, it depends on various other modules in the edX platform, including Enrollments, BlockStructures, Modulestore, Courseware Student Module, and Submissions. Once those modules are extracted into their own repos, it would be possible to do the same for Grades.
The Grades code currently lives in a `django app within edx-platform. <https://github.com/openedx/edx-platform/tree/master/lms/djangoapps/grades>`_ Long-term, it's possible for the Grades project to be in its own repo. However, currently, it depends on various other modules in the edX platform, including Enrollments, BlockStructures, Modulestore, Courseware Student Module, and Submissions. Once those modules are extracted into their own repos, it would be possible to do the same for Grades.
Classes
-------
@@ -13,7 +13,7 @@ The Grades Python API was designed with simplicity and usability in mind. It us
Signals
-------
See `grades.signals.signals.py <https://github.com/edx/edx-platform/blob/master/lms/djangoapps/grades/signals/signals.py>`_ for description on the following grades-related django signals:
See `grades.signals.signals.py <https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/grades/signals/signals.py>`_ for description on the following grades-related django signals:
* PROBLEM_RAW_SCORE_CHANGED
@@ -25,11 +25,11 @@ See `grades.signals.signals.py <https://github.com/edx/edx-platform/blob/master/
* SUBSECTION_OVERRIDE_CHANGED
See `core.djangoapps.signals.signals.py <https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/signals/signals.py>`_ for description on the following signal:
See `core.djangoapps.signals.signals.py <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/signals/signals.py>`_ for description on the following signal:
* COURSE_GRADE_CHANGED (includes **CourseGradeBase** object)
Block Transformer
-----------------
The `Grades Block Transformer <https://github.com/edx/edx-platform/blob/master/lms/djangoapps/grades/transformer.py>`_ collects and stores denormalized and read-optimized grading information when the course is published. Please see its docstring for further information.
The `Grades Block Transformer <https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/grades/transformer.py>`_ collects and stores denormalized and read-optimized grading information when the course is published. Please see its docstring for further information.

View File

@@ -17,7 +17,7 @@ def plugin_settings(settings):
# analytics section.
# .. toggle_use_cases: opt_out
# .. toggle_creation_date: 2014-11-12
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/5838
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/5838
'DISPLAY_ANALYTICS_ENROLLMENTS': True,
# .. toggle_name: FEATURES['ENABLE_CCX_ANALYTICS_DASHBOARD_URL']
@@ -28,7 +28,7 @@ def plugin_settings(settings):
# setting, the tab does not show up for any courses.
# .. toggle_use_cases: opt_in
# .. toggle_creation_date: 2016-10-07
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/13196
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/13196
'ENABLE_CCX_ANALYTICS_DASHBOARD_URL': False,
# .. setting_name: FEATURES['MAX_ENROLLMENT_INSTR_BUTTONS']
@@ -47,7 +47,7 @@ def plugin_settings(settings):
# configured storage backend and give links for downloads.
# .. toggle_use_cases: opt_in
# .. toggle_creation_date: 2016-07-06
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/11286
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/11286
'ENABLE_GRADE_DOWNLOADS': False,
# .. toggle_name: FEATURES['ALLOW_COURSE_STAFF_GRADE_DOWNLOADS']
@@ -57,7 +57,7 @@ def plugin_settings(settings):
# if set to False, only edX superusers can perform the downloads.
# .. toggle_use_cases: opt_in
# .. toggle_creation_date: 2018-03-26
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/1750
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/1750
'ALLOW_COURSE_STAFF_GRADE_DOWNLOADS': False,
# .. toggle_name: FEATURES['ALLOW_AUTOMATED_SIGNUPS']
@@ -68,7 +68,7 @@ def plugin_settings(settings):
# and register for course.
# .. toggle_use_cases: opt_in
# .. toggle_creation_date: 2014-10-21
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/5670
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/5670
'ALLOW_AUTOMATED_SIGNUPS': False,
# .. toggle_name: FEATURES['ENABLE_AUTOMATED_SIGNUPS_EXTRA_FIELDS']
@@ -80,7 +80,7 @@ def plugin_settings(settings):
# assign the new user and the enrollment course mode.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2021-10-26
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/21260
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/21260
'ENABLE_AUTOMATED_SIGNUPS_EXTRA_FIELDS': False,
# .. toggle_name: FEATURES['CERTIFICATES_INSTRUCTOR_GENERATION'] # lint-amnesty, pylint: disable=annotation-missing-token
@@ -99,6 +99,6 @@ def plugin_settings(settings):
# enrollment form on the instructor dashboard is already checked on page load or not.
# .. toggle_use_cases: opt_out
# .. toggle_creation_date: 2017-07-05
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/15392
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15392
'BATCH_ENROLLMENT_NOTIFY_USERS_DEFAULT': True,
})

View File

@@ -4,7 +4,7 @@ For details on the decision to implement the code_owner custom attribute, see:
lms/djangoapps/monitoring/docs/decisions/0001-monitoring-by-code-owner.rst
Originally, this directory contained the ``CodeOwnerMetricMiddleware``, but that has since been moved to
https://github.com/edx/edx-django-utils/tree/master/edx_django_utils/monitoring/code_owner
https://github.com/openedx/edx-django-utils/tree/master/edx_django_utils/monitoring/code_owner
and renamed ``CodeOwnerMonitoringMiddleware``.
This directory continues to contain scripts that can help generate the appropriate ownership mappings for the LMS.

View File

@@ -830,7 +830,7 @@ class UserProgramCourseEnrollmentView(
that a user has for course-runs within a given program.
Fields included are the title, upcoming due dates, etc.
This API endpoint is intended for use with the
[Program Learner Portal MFE](https://github.com/edx/frontend-app-learner-portal-programs).
[Program Learner Portal MFE](https://github.com/openedx/frontend-app-learner-portal-programs).
It is important to note that the set of enrollments that this endpoint returns
is different than a user's set of *program-course-run enrollments*.

View File

@@ -35,7 +35,7 @@ def are_team_submissions_enabled(course_key):
return True
# TODO: this behaviour differs from edx-ora2, where the WaffleSwitch overrides the setting.
# https://github.com/edx/edx-ora2/blob/ac502d8301cb987c9885aaefbaeddaf456c13fb9/openassessment/xblock/config_mixin.py#L96
# https://github.com/openedx/edx-ora2/blob/ac502d8301cb987c9885aaefbaeddaf456c13fb9/openassessment/xblock/config_mixin.py#L96
if TEAM_SUBMISSIONS_FEATURE.is_enabled():
return True

View File

@@ -98,7 +98,7 @@ FEATURES = {
# by course staff.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-09-04
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/2425
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2425
'DISPLAY_DEBUG_INFO_TO_STAFF': True,
# .. toggle_name: FEATURES['DISPLAY_HISTOGRAMS_TO_STAFF']
@@ -109,7 +109,7 @@ FEATURES = {
# .. toggle_creation_date: 2014-02-13
# .. toggle_warning: Generating histograms requires scanning the courseware_studentmodule table on each view. This
# can make staff access to courseware very slow on large courses.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/2425
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2425
'DISPLAY_HISTOGRAMS_TO_STAFF': False, # For large courses this slows down courseware access for staff.
'REROUTE_ACTIVATION_EMAIL': False, # nonempty string = address for all activation emails
@@ -122,7 +122,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2012-07-24
# .. toggle_warning: This will cause ALL courses to be immediately visible.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/17913
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/17913
## DO NOT SET TO True IN THIS FILE
## Doing so will cause all courses to be released on production
'DISABLE_START_DATES': False,
@@ -148,7 +148,7 @@ FEATURES = {
# .. toggle_creation_date: 2014-03-27
# .. toggle_warning: For consistency in user-experience, keep the value in sync with the setting of the same name
# in the CMS.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/3064
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/3064
'ENABLE_TEXTBOOK': True,
# .. toggle_name: FEATURES['ENABLE_DISCUSSION_HOME_PANEL']
@@ -159,7 +159,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2013-07-30
# .. toggle_warning: This should remain off in production until digest notifications are online.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/520
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/520
'ENABLE_DISCUSSION_HOME_PANEL': False,
# .. toggle_name: FEATURES['ENABLE_DISCUSSION_EMAIL_DIGEST']
@@ -174,7 +174,7 @@ FEATURES = {
# .. toggle_warning: It is not recommended to enable this feature if ENABLE_DISCUSSION_HOME_PANEL is not enabled,
# since subscribers who receive digests in that case will only be able to unsubscribe via links embedded in
# their emails, and they will have no way to resubscribe.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/4891
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/4891
'ENABLE_DISCUSSION_EMAIL_DIGEST': False,
# .. toggle_name: FEATURES['ENABLE_UNICODE_USERNAME']
@@ -185,7 +185,7 @@ FEATURES = {
# regular expression defined by USERNAME_REGEX_PARTIAL.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2017-06-27
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/14729
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/14729
'ENABLE_UNICODE_USERNAME': False,
# .. toggle_name: FEATURES['ENABLE_DJANGO_ADMIN_SITE']
@@ -196,7 +196,7 @@ FEATURES = {
# .. toggle_creation_date: 2013-09-26
# .. toggle_warning: It is not recommended to disable this feature as there are many settings available on
# Django's admin site and will be inaccessible to the superuser.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/829
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/829
'ENABLE_DJANGO_ADMIN_SITE': True,
'ENABLE_LMS_MIGRATION': False,
@@ -233,10 +233,10 @@ FEATURES = {
# .. toggle_default: False
# .. toggle_description: Enable an API endpoint, named "xblock_view", to serve rendered XBlock views. This might be
# used by external applications. See for instance jquery-xblock (now unmaintained):
# https://github.com/edx-solutions/jquery-xblock
# https://github.com/openedx/jquery-xblock
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2014-03-14
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/2968
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2968
'ENABLE_XBLOCK_VIEW_ENDPOINT': False,
# Allows to configure the LMS to provide CORS headers to serve requests from other
@@ -252,7 +252,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2013-09-28
# .. toggle_warning: This Effects views and templates.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/1073
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/1073
'COURSES_ARE_BROWSABLE': True,
# Can be turned off to disable the help link in the navbar
@@ -262,7 +262,7 @@ FEATURES = {
# .. toggle_description: When True, a help link is displayed on the main navbar. Set False to hide it.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2021-03-05
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/26106
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/26106
'ENABLE_HELP_LINK': True,
# .. toggle_name: FEATURES['HIDE_DASHBOARD_COURSES_UNTIL_ACTIVATED']
@@ -282,7 +282,7 @@ FEATURES = {
# tool. Set to False if you want to hide Submission History from the courseware page.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2013-02-15
# .. toggle_tickets: https://github.com/edx/edx-platform/commit/8f17e6ae9ed76fa75b3caf867b65ccb632cb6870
# .. toggle_tickets: https://github.com/openedx/edx-platform/commit/8f17e6ae9ed76fa75b3caf867b65ccb632cb6870
'ENABLE_STUDENT_HISTORY_VIEW': True,
# Turn on a page that lets staff enter Python code to be run in the
@@ -319,7 +319,7 @@ FEATURES = {
# be added to MODULESTORE_FIELD_OVERRIDE_PROVIDERS
# .. toggle_use_cases: opt_in, circuit_breaker
# .. toggle_creation_date: 2015-04-10
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/6636
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6636
'CUSTOM_COURSES_EDX': False,
# Toggle to enable certificates of courses on dashboard
@@ -349,7 +349,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2013-07-25
# .. toggle_warning: If this has been set to True then the account activation email will be skipped.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/417
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/417
'AUTOMATIC_AUTH_FOR_TESTING': False,
# .. toggle_name: FEATURES['RESTRICT_AUTOMATIC_AUTH']
@@ -390,7 +390,7 @@ FEATURES = {
# cosmetic price is used when there is no registration price associated to the course.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2014-10-10
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/6876
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6876
# .. toggle_warning: The use case of this feature toggle is uncertain.
'ENABLE_COSMETIC_DISPLAY_PRICE': False,
@@ -405,7 +405,7 @@ FEATURES = {
# identity verification attempts.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2013-10-03
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/1184
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/1184
'AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING': False,
# Maximum number of rows to include in the csv file for downloading problem responses.
@@ -430,7 +430,7 @@ FEATURES = {
# set to False then account locking will be disabled for failed login attempts.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2014-01-30
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/2331
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2331
'ENABLE_MAX_FAILED_LOGIN_ATTEMPTS': True,
# Hide any Personally Identifiable Information from application logs
@@ -447,7 +447,7 @@ FEATURES = {
# .. toggle_target_removal_date: None
# .. toggle_warning: reverse proxy should be configured appropriately for example Client IP address headers
# (e.g HTTP_X_FORWARDED_FOR) should be configured.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/2749
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/2749
'EMBARGO': False,
# Whether the Wiki subsystem should be accessible via the direct /wiki/ paths. Setting this to True means
@@ -487,7 +487,7 @@ FEATURES = {
# the user.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2014-09-16
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/5220
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/5220
'ALWAYS_REDIRECT_HOMEPAGE_TO_DASHBOARD_FOR_AUTHENTICATED_USER': True,
# .. toggle_name: FEATURES['ENABLE_COURSE_SORTING_BY_START_DATE']
@@ -498,7 +498,7 @@ FEATURES = {
# by their start dates, latest first.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-03-27
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/7548
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7548
'ENABLE_COURSE_SORTING_BY_START_DATE': True,
# .. toggle_name: FEATURES['ENABLE_COURSE_HOME_REDIRECT']
@@ -508,7 +508,7 @@ FEATURES = {
# course "about" page will be redirected to the course home url.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2019-01-15
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/19604
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/19604
'ENABLE_COURSE_HOME_REDIRECT': True,
# Expose Mobile REST API. Note that if you use this, you must also set
@@ -538,7 +538,7 @@ FEATURES = {
# .. toggle_warning: If you set this to True then you should also set your mobile application's app store and play
# store URLs in the MOBILE_STORE_URLS settings dictionary. These links are not part of the default theme. If you
# want these links on your footer then you should use the edx.org theme.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/6588
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6588
'ENABLE_FOOTER_MOBILE_APP_LINKS': False,
# Let students save and manage their annotations
@@ -552,7 +552,7 @@ FEATURES = {
# EDXNOTES_INTERNAL_API and EDXNOTES_PUBLIC_API. If you update this setting, also update it in Studio.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-01-04
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/6321
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6321
'ENABLE_EDXNOTES': False,
# Toggle to enable coordination with the Publisher tool (keep in sync with cms/envs/common.py)
@@ -581,7 +581,7 @@ FEATURES = {
# .. toggle_creation_date: 2015-01-29
# .. toggle_warning: In order to get this working, your courses data should be indexed in Elasticsearch. You will
# see the search widget on the courseware page only if the DISABLE_COURSE_OUTLINE_PAGE_FLAG is set.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/6506
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6506
'ENABLE_COURSEWARE_SEARCH': False,
# .. toggle_name: FEATURES['ENABLE_COURSEWARE_SEARCH_FOR_COURSE_STAFF']
@@ -606,7 +606,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-01-29
# .. toggle_warning: In order to get this working, your courses data should be indexed in Elasticsearch.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/6506
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/6506
'ENABLE_DASHBOARD_SEARCH': False,
# log all information from cybersource callbacks
@@ -619,7 +619,7 @@ FEATURES = {
# license information to the courseware.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-05-14
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/7315
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7315
'LICENSING': False,
# .. toggle_name: FEATURES['CERTIFICATES_HTML_VIEW']
@@ -632,7 +632,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-03-13
# .. toggle_target_removal_date: None
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/7113
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7113
'CERTIFICATES_HTML_VIEW': False,
# .. toggle_name: FEATURES['CUSTOM_CERTIFICATE_TEMPLATES_ENABLED']
@@ -656,7 +656,7 @@ FEATURES = {
# .. toggle_creation_date: 2015-04-23
# .. toggle_target_removal_date: None
# .. toggle_warning: The COURSE_DISCOVERY_MEANINGS setting should be properly defined.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/7845
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7845
'ENABLE_COURSE_DISCOVERY': False,
# .. toggle_name: FEATURES['ENABLE_COURSE_FILENAME_CCX_SUFFIX']
@@ -691,7 +691,7 @@ FEATURES = {
# .. toggle_description: Enable to use special exams, aka timed and proctored exams.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-09-04
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/9744
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/9744
'ENABLE_SPECIAL_EXAMS': False,
# .. toggle_name: FEATURES['ENABLE_OPENBADGES']
@@ -717,7 +717,7 @@ FEATURES = {
# https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/lti/index.html
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-04-24
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/7689
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/7689
'ENABLE_LTI_PROVIDER': False,
# .. toggle_name: FEATURES['SHOW_HEADER_LANGUAGE_SELECTOR']
@@ -728,7 +728,7 @@ FEATURES = {
# .. toggle_creation_date: 2017-05-25
# .. toggle_warning: You should set the languages in the DarkLangConfig table to get this working. If you have
# not set any languages in the DarkLangConfig table then the language selector will not be visible in the header.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/15133
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15133
'SHOW_HEADER_LANGUAGE_SELECTOR': False,
# At edX it's safe to assume that English transcripts are always available
@@ -743,7 +743,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2017-05-25
# .. toggle_warning: LANGUAGE_COOKIE_NAME is required to use footer-language-selector, set it if it has not been set.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/15133
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15133
'SHOW_FOOTER_LANGUAGE_SELECTOR': False,
# .. toggle_name: FEATURES['ENABLE_CSMH_EXTENDED']
@@ -811,7 +811,7 @@ FEATURES = {
# users in a course using bulk enrollment API endpoint (/api/bulk_enroll/v1/bulk_enroll).
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2017-07-15
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/15006
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/15006
'ENABLE_BULK_ENROLLMENT_VIEW': False,
# Set to enable Enterprise integration
@@ -851,7 +851,7 @@ FEATURES = {
# hide this section.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2018-06-01
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/18298
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/18298
'ENABLE_ACCOUNT_DELETION': True,
# Enable feature to remove enrollments and users. Used to reset state of master's integration environments
@@ -865,7 +865,7 @@ FEATURES = {
# default because enabling allows a method to bypass password policy.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2020-02-21
# .. toggle_tickets: 'https://github.com/edx/edx-platform/pull/21616'
# .. toggle_tickets: 'https://github.com/openedx/edx-platform/pull/21616'
'ENABLE_CHANGE_USER_PASSWORD_ADMIN': False,
# .. toggle_name: FEATURES['ENABLE_AUTHN_MICROFRONTEND']
@@ -875,7 +875,7 @@ FEATURES = {
# .. toggle_use_cases: temporary, open_edx
# .. toggle_creation_date: 2020-09-08
# .. toggle_target_removal_date: None
# .. toggle_tickets: 'https://github.com/edx/edx-platform/pull/24908'
# .. toggle_tickets: 'https://github.com/openedx/edx-platform/pull/24908'
# .. toggle_warning: Also set settings.AUTHN_MICROFRONTEND_URL for rollout. This temporary feature
# toggle does not have a target removal date.
'ENABLE_AUTHN_MICROFRONTEND': os.environ.get("EDXAPP_ENABLE_AUTHN_MFE", False),
@@ -992,7 +992,7 @@ FEATURES = {
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2022-03-22
# .. toggle_target_removal_date: None
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/28268
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/28268
# .. toggle_warning: For consistency in user-experience, keep the value in sync with the setting of the same name
# in the LMS and CMS.
'MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW': False,
@@ -1667,7 +1667,7 @@ DEFAULT_HASHING_ALGORITHM = 'sha1'
#################### Python sandbox ############################################
CODE_JAIL = {
# from https://github.com/edx/codejail/blob/master/codejail/django_integration.py#L24, '' should be same as None
# from https://github.com/openedx/codejail/blob/master/codejail/django_integration.py#L24, '' should be same as None
'python_bin': '/edx/app/edxapp/venvs/edxapp-sandbox/bin/python',
# User to run as in the sandbox.
'user': 'sandbox',
@@ -1957,7 +1957,7 @@ from lms.djangoapps.course_wiki import settings as course_wiki_settings # pylin
# .. toggle_default: False
# .. toggle_description: We recommend you leave this as 'False' for an Open edX installation
# to get the proper behavior for register, login and logout. For the original docs see:
# https://github.com/edx/django-wiki/blob/edx_release/wiki/conf/settings.py
# https://github.com/openedx/django-wiki/blob/edx_release/wiki/conf/settings.py
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2012-08-13
WIKI_ACCOUNT_HANDLING = False
@@ -1968,7 +1968,7 @@ WIKI_SHOW_MAX_CHILDREN = 0 # We don't use the little menu that shows children o
# .. toggle_default: False
# .. toggle_description: Enabling this allows access to anonymous users.
# For the original docs, see:
# https://github.com/edx/django-wiki/blob/edx_release/wiki/conf/settings.py
# https://github.com/openedx/django-wiki/blob/edx_release/wiki/conf/settings.py
# .. toggle_warning: Setting allow anonymous access to `True` may have styling issues.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2012-08-21
@@ -1983,7 +1983,7 @@ WIKI_CAN_ASSIGN = course_wiki_settings.CAN_ASSIGN
# .. toggle_default: False
# .. toggle_description: Enabling this will use the bootstrap select widget.
# For the original docs, see:
# https://github.com/edx/django-wiki/blob/edx_release/wiki/conf/settings.py
# https://github.com/openedx/django-wiki/blob/edx_release/wiki/conf/settings.py
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2012-08-22
WIKI_USE_BOOTSTRAP_SELECT_WIDGET = False
@@ -1991,7 +1991,7 @@ WIKI_USE_BOOTSTRAP_SELECT_WIDGET = False
# .. toggle_implementation: DjangoSetting
# .. toggle_default: False
# .. toggle_description: This setting is defined in the original docs:
# https://github.com/edx/django-wiki/blob/edx_release/wiki/conf/settings.py
# https://github.com/openedx/django-wiki/blob/edx_release/wiki/conf/settings.py
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2012-08-23
WIKI_LINK_LIVE_LOOKUPS = False
@@ -2811,22 +2811,22 @@ HEARTBEAT_CELERY_ROUTING_KEY = HIGH_PRIORITY_QUEUE
# .. setting_default: dict of settings
# .. setting_description: Stores all the settings used by block structures and block structure
# related tasks. See BLOCK_STRUCTURES_SETTINGS[XXX] documentation for details of each setting.
# For more information, check https://github.com/edx/edx-platform/pull/13388.
# For more information, check https://github.com/openedx/edx-platform/pull/13388.
BLOCK_STRUCTURES_SETTINGS = dict(
# .. setting_name: BLOCK_STRUCTURES_SETTINGS['COURSE_PUBLISH_TASK_DELAY']
# .. setting_default: 30
# .. setting_description: Delay, in seconds, after a new edit of a course is published before
# updating the block structures cache. This is needed for a better chance at getting
# the latest changes when there are secondary reads in sharded mongoDB clusters.
# For more information, check https://github.com/edx/edx-platform/pull/13388 and
# https://github.com/edx/edx-platform/pull/14571.
# For more information, check https://github.com/openedx/edx-platform/pull/13388 and
# https://github.com/openedx/edx-platform/pull/14571.
COURSE_PUBLISH_TASK_DELAY=30,
# .. setting_name: BLOCK_STRUCTURES_SETTINGS['TASK_DEFAULT_RETRY_DELAY']
# .. setting_default: 30
# .. setting_description: Delay, in seconds, between retry attempts if a block structure task
# fails. For more information, check https://github.com/edx/edx-platform/pull/13388 and
# https://github.com/edx/edx-platform/pull/14571.
# fails. For more information, check https://github.com/openedx/edx-platform/pull/13388 and
# https://github.com/openedx/edx-platform/pull/14571.
TASK_DEFAULT_RETRY_DELAY=30,
# .. setting_name: BLOCK_STRUCTURES_SETTINGS['TASK_MAX_RETRIES']
@@ -2834,8 +2834,8 @@ BLOCK_STRUCTURES_SETTINGS = dict(
# .. setting_description: Maximum number of retries per block structure task.
# If the maximum number of retries is exceeded, then you can attempt to either manually run
# the celery task, or wait for it to be triggered again.
# For more information, check https://github.com/edx/edx-platform/pull/13388 and
# https://github.com/edx/edx-platform/pull/14571.
# For more information, check https://github.com/openedx/edx-platform/pull/13388 and
# https://github.com/openedx/edx-platform/pull/14571.
TASK_MAX_RETRIES=5,
# .. toggle_name: BLOCK_STRUCTURES_SETTINGS['PRUNING_ACTIVE']
@@ -2849,8 +2849,8 @@ BLOCK_STRUCTURES_SETTINGS = dict(
# .. toggle_use_cases: temporary
# .. toggle_creation_date: 2018-03-22
# .. toggle_target_removal_date: 2018-06-22
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/14571,
# https://github.com/edx/edx-platform/pull/17760,
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/14571,
# https://github.com/openedx/edx-platform/pull/17760,
# https://openedx.atlassian.net/browse/DEPR-146
PRUNING_ACTIVE=False,
)
@@ -2938,7 +2938,7 @@ YOUTUBE_API_KEY = 'PUT_YOUR_API_KEY_HERE'
# - Add it to OPTIONAL_APPS below (registered if importable)
# - Add it to the ADDL_INSTALLED_APPS configuration variable (acts like EXTRA_APPS in other IDAs)
# - Make it a plugin (which are auto-registered) and add it to the EDXAPP_PRIVATE_REQUIREMENTS configuration variable
# (See https://github.com/edx/edx-django-utils/tree/master/edx_django_utils/plugins)
# (See https://github.com/openedx/edx-django-utils/tree/master/edx_django_utils/plugins)
INSTALLED_APPS = [
# Standard ones that are always installed...
'django.contrib.auth',
@@ -3230,7 +3230,7 @@ INSTALLED_APPS = [
# Learning Sequence Navigation
'openedx.core.djangoapps.content.learning_sequences.apps.LearningSequencesConfig',
# Database-backed Organizations App (http://github.com/edx/edx-organizations)
# Database-backed Organizations App (http://github.com/openedx/edx-organizations)
'organizations',
# Bulk User Retirement
@@ -3292,7 +3292,7 @@ REST_FRAMEWORK = {
# is validated via RegistrationValidationView.
# It's POST endpoint is rate-limited up to 30 requests per IP Address in a week by default.
# It was introduced because an attacker can guess or brute force a series of names to enumerate valid users.
# .. setting_tickets: https://github.com/edx/edx-platform/pull/24664
# .. setting_tickets: https://github.com/openedx/edx-platform/pull/24664
REGISTRATION_VALIDATION_RATELIMIT = '30/7d'
# .. setting_name: REGISTRATION_RATELIMIT
@@ -3300,7 +3300,7 @@ REGISTRATION_VALIDATION_RATELIMIT = '30/7d'
# .. setting_description: New users are registered on edx via RegistrationView.
# It's POST end-point is rate-limited up to 60 requests per IP Address in a week by default.
# Purpose of this setting is to restrict an attacker from registering numerous fake accounts.
# .. setting_tickets: https://github.com/edx/edx-platform/pull/27060
# .. setting_tickets: https://github.com/openedx/edx-platform/pull/27060
REGISTRATION_RATELIMIT = '60/7d'
SWAGGER_SETTINGS = {
@@ -3508,7 +3508,7 @@ ENABLE_CREDIT_ELIGIBILITY = True
# Eligibility" section then appears for those courses in the LMS.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2015-06-17
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/8550
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/8550
FEATURES['ENABLE_CREDIT_ELIGIBILITY'] = ENABLE_CREDIT_ELIGIBILITY
############# Cross-domain requests #################
@@ -3986,7 +3986,7 @@ OPTIONAL_APPS = [
# edxval
('edxval', 'openedx.core.djangoapps.content.course_overviews.apps.CourseOverviewsConfig'),
# Enterprise Apps (http://github.com/edx/edx-enterprise)
# Enterprise Apps (http://github.com/openedx/edx-enterprise)
('enterprise', None),
('consent', None),
('integrated_channels.integrated_channel', None),
@@ -4430,7 +4430,7 @@ PROGRAM_CERTIFICATES_ROUTING_KEY = 'edx.lms.core.default'
# Settings for Comprehensive Theming app
# See https://github.com/edx/edx-django-sites-extensions for more info
# See https://github.com/openedx/edx-django-sites-extensions for more info
# Default site to use if site matching request headers does not exist
SITE_ID = 1
@@ -4715,7 +4715,7 @@ COMPLETION_BY_VIEWING_DELAY_MS = 5000
# When disabled, RATELIMIT_RATE is not applied.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2018-01-08
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/16951
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/16951
RATELIMIT_ENABLE = True
# .. setting_name: RATELIMIT_RATE
@@ -4726,7 +4726,7 @@ RATELIMIT_ENABLE = True
# .. setting_warning: RATELIMIT_ENABLE flag must also be enabled/set to True to use this RATELIMIT_RATE setting.
# .. setting_use_cases: open_edx
# .. setting_creation_date: 2018-01-08
# .. setting_tickets: https://github.com/edx/edx-platform/pull/16951
# .. setting_tickets: https://github.com/openedx/edx-platform/pull/16951
RATELIMIT_RATE = '120/m'
##### LOGISTRATION RATE LIMIT SETTINGS #####
@@ -5128,7 +5128,7 @@ SHOW_ACTIVATE_CTA_POPUP_COOKIE_NAME = 'show-account-activation-popup'
# .. toggle_default: False
# .. toggle_description: Flag would be used to show account activation popup after the registration
# .. toggle_use_cases: open_edx
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/27661
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/27661
# .. toggle_creation_date: 2021-06-10
SHOW_ACCOUNT_ACTIVATION_CTA = False

View File

@@ -15,7 +15,7 @@
# a devstack.py at all.
#
# This is part of the effort to move our dev tools off of Ansible and
# Paver, described here: https://github.com/edx/devstack/pull/866
# Paver, described here: https://github.com/openedx/devstack/pull/866
# TODO: If the effort described above is abandoned, then this file should
# probably be deleted.
ACCOUNT_MICROFRONTEND_URL: null

View File

@@ -378,7 +378,7 @@ FEATURES.update({
'SHOW_HEADER_LANGUAGE_SELECTOR': True,
# Enable enterprise integration by default.
# See https://github.com/edx/edx-enterprise/blob/master/docs/development.rst for
# See https://github.com/openedx/edx-enterprise/blob/master/docs/development.rst for
# more background on edx-enterprise.
# Toggle this off if you don't want anything to do with enterprise in devstack.
'ENABLE_ENTERPRISE_INTEGRATION': True,

View File

@@ -24,7 +24,7 @@ edx-platform. Therefore, they are not checked into the edx-platform repo.
Rather, they are generated from the `edxapp playbook in the configuration
repo`_ and available in the ``/edx/etc/`` folder on edX servers.
.. _edxapp playbook in the configuration repo: https://github.com/edx/configuration/tree/master/playbooks/roles/edxapp
.. _edxapp playbook in the configuration repo: https://github.com/openedx/configuration/tree/master/playbooks/roles/edxapp
Feature Flags and Settings Guidelines

View File

@@ -14,7 +14,7 @@ export class StatusAlertRenderer {
if (element) {
/*
These props match the defaults mostly in the paragon lib:
https://github.com/edx/paragon/tree/master/src/StatusAlert
https://github.com/openedx/paragon/tree/master/src/StatusAlert
but are made explicit in the case of a upstream change to defaults
*/
ReactDOM.render(

View File

@@ -1,8 +1,8 @@
Responsibilities
================
The code in the jwt_auth folder was pulled from https://github.com/edx/frontend-platform/tree/master/src/auth
The code in the jwt_auth folder was pulled from https://github.com/openedx/frontend-platform/tree/master/src/auth
Primarily the code required to use https://github.com/edx/frontend-platform/blob/master/src/auth/AxiosJwtTokenService.js
Primarily the code required to use https://github.com/openedx/frontend-platform/blob/master/src/auth/AxiosJwtTokenService.js
This code will require updates if changes are made in the AxiosJwtTokenService.

View File

@@ -130,7 +130,7 @@ section.discussion {
.xblock-student_view-discussion {
@extend %ui-print-excluded;
// Overrides overspecific courseware CSS from:
// https://github.com/edx/edx-platform/blob/master/lms/static/sass/course/courseware/_courseware.scss#L499
// https://github.com/openedx/edx-platform/blob/master/lms/static/sass/course/courseware/_courseware.scss#L499
padding-top: 15px !important;
}

View File

@@ -188,7 +188,7 @@
.forum-nav-thread-labels {
margin: 5px 0 0;
// Overrides overspecific courseware CSS from:
// https://github.com/edx/edx-platform/blob/master/lms/static/sass/course/courseware/_courseware.scss#L470
// https://github.com/openedx/edx-platform/blob/master/lms/static/sass/course/courseware/_courseware.scss#L470
// note this should *not* be RTLed, as the rule it overrides is not RTLed
padding-left: 0 !important;
}
@@ -391,7 +391,7 @@
&:focus {
color: $forum-color-active-text;
// !important overrides the one set here:
// https://github.com/edx/edx-platform/blob/master/lms/static/sass/elements/_controls.scss#L472
// https://github.com/openedx/edx-platform/blob/master/lms/static/sass/elements/_controls.scss#L472
background-color: $forum-color-active-thread !important;
}
}

View File

@@ -44,9 +44,9 @@
window.footerLanguageSelector = {
##
## Set the language cookie using the same settings as
## https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/lang_pref/views.py#L26
## https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/lang_pref/views.py#L26
## and
## https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/lang_pref/middleware.py#63
## https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/lang_pref/middleware.py#63
## Then refresh the page so that the language negotiation middleware can read it and re-render everything
## in the selected language.
##

View File

@@ -144,7 +144,7 @@ urlpatterns = [
path('api/profile_images/', include('openedx.core.djangoapps.profile_images.urls')),
# Video Abstraction Layer used to allow video teams to manage video assets
# independently of courseware. https://github.com/edx/edx-val
# independently of courseware. https://github.com/openedx/edx-val
path('api/val/v0/', include('edxval.urls')),
path(

View File

@@ -20,7 +20,7 @@ def cursor_paginate_serializer(inner_serializer_class):
Create a cursor-paginated version of a serializer.
This is hacky workaround for an edx-api-doc-tools issue described here:
https://github.com/edx/api-doc-tools/issues/32
https://github.com/openedx/api-doc-tools/issues/32
It assumes we are using cursor-style pagination and assumes a specific
schema for the pages. It should be removed once we address the underlying issue.

View File

@@ -174,7 +174,7 @@ class AccessTokenExchangeForm(forms.Form):
raise OAuthValidationError(
{
# invalid_client isn't really the right code, but this mirrors
# https://github.com/edx/django-oauth2-provider/blob/edx/provider/oauth2/forms.py#L331
# https://github.com/openedx/django-oauth2-provider/blob/edx/provider/oauth2/forms.py#L331
"error": "invalid_client",
"error_description": f"{client_id} is not a public client",
}

View File

@@ -102,7 +102,7 @@ class ImageFactory(ImageFactoryBase):
"""
For constructing dicts mirroring the catalog's serialized representation of ImageFields.
See https://github.com/edx/course-discovery/blob/master/course_discovery/apps/api/fields.py.
See https://github.com/openedx/course-discovery/blob/master/course_discovery/apps/api/fields.py.
"""
description = factory.Faker('sentence')
src = factory.Faker('image_url')
@@ -112,7 +112,7 @@ class StdImageFactory(ImageFactoryBase):
"""
For constructing dicts mirroring the catalog's serialized representation of StdImageFields.
See https://github.com/edx/course-discovery/blob/master/course_discovery/apps/api/fields.py.
See https://github.com/openedx/course-discovery/blob/master/course_discovery/apps/api/fields.py.
"""
url = factory.Faker('image_url')

View File

@@ -20,8 +20,8 @@ from .models import BlockStructureConfiguration
# .. toggle_use_cases: temporary
# .. toggle_creation_date: 2017-02-23
# .. toggle_target_removal_date: 2017-05-23
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/14358,
# https://github.com/edx/edx-platform/pull/14571,
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/14358,
# https://github.com/openedx/edx-platform/pull/14571,
# https://openedx.atlassian.net/browse/DEPR-144
INVALIDATE_CACHE_ON_PUBLISH = WaffleSwitch(
"block_structure.invalidate_cache_on_publish", __name__
@@ -41,8 +41,8 @@ INVALIDATE_CACHE_ON_PUBLISH = WaffleSwitch(
# .. toggle_use_cases: temporary
# .. toggle_creation_date: 2017-02-23
# .. toggle_target_removal_date: 2017-05-23
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/14512,
# https://github.com/edx/edx-platform/pull/14770,
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/14512,
# https://github.com/openedx/edx-platform/pull/14770,
# https://openedx.atlassian.net/browse/DEPR-145
STORAGE_BACKING_FOR_CACHE = WaffleSwitch(
"block_structure.storage_backing_for_cache", __name__
@@ -59,8 +59,8 @@ STORAGE_BACKING_FOR_CACHE = WaffleSwitch(
# .. toggle_use_cases: temporary
# .. toggle_creation_date: 2017-02-23
# .. toggle_target_removal_date: 2017-05-23
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/14512,
# https://github.com/edx/edx-platform/pull/14770,
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/14512,
# https://github.com/openedx/edx-platform/pull/14770,
# https://openedx.atlassian.net/browse/DEPR-143
RAISE_ERROR_WHEN_NOT_FOUND = WaffleSwitch(
"block_structure.raise_error_when_not_found", __name__

View File

@@ -40,7 +40,7 @@ def _directory_name(data_usage_key):
# .. setting_default: ''
# .. setting_description: Specifies the path in storage where block structures would be saved,
# for storage-backed block structure cache.
# For more information, check https://github.com/edx/edx-platform/pull/14571.
# For more information, check https://github.com/openedx/edx-platform/pull/14571.
# .. setting_warnings: Depends on `BLOCK_STRUCTURES_SETTINGS['STORAGE_CLASS']` and on
# `block_structure.storage_backing_for_cache`.
directory_prefix = settings.BLOCK_STRUCTURES_SETTINGS.get('DIRECTORY_PREFIX', '')
@@ -73,7 +73,7 @@ def _bs_model_storage():
# .. setting_name: BLOCK_STRUCTURES_SETTINGS['STORAGE_CLASS']
# .. setting_default: None
# .. setting_description: Specifies the storage used for storage-backed block structure cache.
# For more information, check https://github.com/edx/edx-platform/pull/14571.
# For more information, check https://github.com/openedx/edx-platform/pull/14571.
# .. setting_warnings: Depends on `block_structure.storage_backing_for_cache`.
storage_class = settings.BLOCK_STRUCTURES_SETTINGS.get('STORAGE_CLASS')
@@ -81,7 +81,7 @@ def _bs_model_storage():
# .. setting_default: {}
# .. setting_description: Specifies the keyword arguments needed to setup the storage, which
# would be used for storage-backed block structure cache.
# For more information, check https://github.com/edx/edx-platform/pull/14571.
# For more information, check https://github.com/openedx/edx-platform/pull/14571.
# .. setting_warnings: Depends on `BLOCK_STRUCTURES_SETTINGS['STORAGE_CLASS']` and on
# `block_structure.storage_backing_for_cache`.
storage_kwargs = settings.BLOCK_STRUCTURES_SETTINGS.get('STORAGE_KWARGS', {})

View File

@@ -7,7 +7,7 @@ the behavior should be modified, so it has been decided to consider any
necessary fixes in a new ticket.
Please see the PR and discussion linked below for further context
https://github.com/edx/edx-platform/pull/24545#discussion_r501738511
https://github.com/openedx/edx-platform/pull/24545#discussion_r501738511
"""
import logging

View File

@@ -156,7 +156,7 @@ class CourseOutlineView(APIView):
The CourseOutline, customized for a given user.
TODO: Swagger docs of API. For an exemplar to imitate, see:
https://github.com/edx/edx-platform/blob/master/lms/djangoapps/program_enrollments/rest_api/v1/views.py#L792-L820
https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/program_enrollments/rest_api/v1/views.py#L792-L820
"""
# Translate input params and do course key validation (will cause HTTP
# 400 error if an invalid CourseKey was entered, instead of 404).

View File

@@ -26,10 +26,10 @@ The rest of the functionality would be similar to how the current LTI 1.1 provid
.. _LTI NRPS: https://www.imsglobal.org/spec/lti-nrps/v2p0
.. _pylti1.3: https://github.com/dmitry-viskov/pylti1.3
.. _@dmitry-viskov: https://github.com/dmitry-viskov
.. _earlier PR: https://github.com/edx/edx-platform/pull/21435
.. _earlier PR: https://github.com/openedx/edx-platform/pull/21435
.. _PyPi package: https://pypi.org/project/PyLTI1p3/
.. _my-learning-analytics: https://github.com/tl-its-umich-edu/my-learning-analytics
.. _NimbleWise (source): https://github.com/edx/edx-platform/pull/21435#issuecomment-664674601
.. _NimbleWise (source): https://github.com/openedx/edx-platform/pull/21435#issuecomment-664674601
Consequences

View File

@@ -23,7 +23,7 @@ to automatically discover such apps and expose them via an API. This API will
be used to list the installed apps that are available for a course and to
enable/disable these apps using the API.
.. _Course Authoring MFE: https://github.com/edx/frontend-app-course-authoring/
.. _Course Authoring MFE: https://github.com/openedx/frontend-app-course-authoring/
Decision
@@ -40,7 +40,7 @@ need a common interface for such apps so they can be enabled/disabled using
a standard common interface.
To do this we can follow the example of existing plugins, [such as Course
Tabs](https://github.com/edx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/common/lib/xmodule/xmodule/tabs.py#L24-L243),
Tabs](https://github.com/openedx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/common/lib/xmodule/xmodule/tabs.py#L24-L243),
which provide a specific Python class that the plugin can inherit from, or
implement. The required metadata and features, can be implemented as class
attributes, and methods on this class.
@@ -48,7 +48,7 @@ attributes, and methods on this class.
We can then discover the installed apps using the existing tooling for plugins
using a subclass of PluginManager designed for this purpose. Here is an example
for [Course
Tabs](https://github.com/edx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/openedx/core/lib/course_tabs.py#L13-L47)
Tabs](https://github.com/openedx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/openedx/core/lib/course_tabs.py#L13-L47)
It might not always make sense for an app installed in this way to be
automatically show up for use on all courses. So each app will expose a method
@@ -62,7 +62,7 @@ In the context of these apps, we need to distinguish between *installed*,
Let's look at an existing feature to explain those terms. The `edxnotes` app
has [code that is part of the
platform](https://github.com/edx/edx-platform/tree/636b2ca4c5add531cfce755fdb8965599acd79e0/lms/djangoapps/edxnotes).
platform](https://github.com/openedx/edx-platform/tree/636b2ca4c5add531cfce755fdb8965599acd79e0/lms/djangoapps/edxnotes).
This code comes preinstalled since it's part of the platform. So it is already
*installed*, however no one can use it just yet, since it it needs to first be
enabled globally. In the case of an external plugin, you consider it installed
@@ -70,10 +70,10 @@ if it is `pip install`ed in the same environment in which edx-platform is
running.
To make the feature *available* for use, you need to now [enable a feature
flag](https://github.com/edx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/lms/envs/common.py#L531-L543).
flag](https://github.com/openedx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/lms/envs/common.py#L531-L543).
Until this is set course authors/admins will [not even see the option of
enabling this for their
course](https://github.com/edx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/cms/djangoapps/models/settings/course_metadata.py#L91-L93).
course](https://github.com/openedx/edx-platform/blob/636b2ca4c5add531cfce755fdb8965599acd79e0/cms/djangoapps/models/settings/course_metadata.py#L91-L93).
For course apps this is where the availability check comes in.
In the case of `edxnotes`, after setting the above feature flag, an option will

View File

@@ -20,7 +20,7 @@ The tool will be added as an LTI integration. We will currently support only
added later.
.. _Course Authoring MFE: https://github.com/edx/frontend-app-course-authoring/
.. _Course Authoring MFE: https://github.com/openedx/frontend-app-course-authoring/
Decision

View File

@@ -91,7 +91,7 @@ class ApiKeyPermissionMixIn:
class EnrollmentUserThrottle(UserRateThrottle, ApiKeyPermissionMixIn):
"""Limit the number of requests users can make to the enrollment API."""
# To see how the staff rate limit was selected, see https://github.com/edx/edx-platform/pull/18360
# To see how the staff rate limit was selected, see https://github.com/openedx/edx-platform/pull/18360
THROTTLE_RATES = {
'user': '40/minute',
'staff': '120/minute',

View File

@@ -47,10 +47,10 @@ References
----------
Model definition
- https://github.com/edx/edx-platform/blob/a5ec801a2a91f928bf582ee9ba2092a5bfbe7d7e/openedx/core/djangoapps/external_user_ids/models.py#L17
- https://github.com/openedx/edx-platform/blob/a5ec801a2a91f928bf582ee9ba2092a5bfbe7d7e/openedx/core/djangoapps/external_user_ids/models.py#L17
Anonymous User ID Table
- https://github.com/edx/edx-platform/blob/6ee2089077b76581e14f230f0c9224757dbdb652/common/djangoapps/student/models.py#L130-L140
- https://github.com/openedx/edx-platform/blob/6ee2089077b76581e14f230f0c9224757dbdb652/common/djangoapps/student/models.py#L130-L140
Some notes on why add a type table
- https://www.itprotoday.com/sql-server/trouble-type-tables

View File

@@ -27,10 +27,10 @@ Provider code
* The JwtBuilder_ uses the pyjwkest_ library for implementation of `JSON Web Signature (JWS)`_ and other crypto to build and sign JWT tokens.
.. _oauth_dispatch: https://github.com/edx/edx-platform/tree/master/openedx/core/djangoapps/oauth_dispatch
.. _validator module: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/dot_overrides/validators.py
.. _Access Token View: https://github.com/edx/edx-platform/blob/d21a09828072504bc97a2e05883c1241e3a35da9/openedx/core/djangoapps/oauth_dispatch/views.py#L89
.. _JwtBuilder: https://github.com/edx/edx-platform/blob/d21a09828072504bc97a2e05883c1241e3a35da9/openedx/core/lib/token_utils.py#L15
.. _oauth_dispatch: https://github.com/openedx/edx-platform/tree/master/openedx/core/djangoapps/oauth_dispatch
.. _validator module: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/dot_overrides/validators.py
.. _Access Token View: https://github.com/openedx/edx-platform/blob/d21a09828072504bc97a2e05883c1241e3a35da9/openedx/core/djangoapps/oauth_dispatch/views.py#L89
.. _JwtBuilder: https://github.com/openedx/edx-platform/blob/d21a09828072504bc97a2e05883c1241e3a35da9/openedx/core/lib/token_utils.py#L15
.. _pyjwkest: https://github.com/IdentityPython/pyjwkest
.. _JSON Web Signature (JWS): https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-41
@@ -47,4 +47,4 @@ Authentication by REST endpoints
* Open edX REST endpoints that support JWTs as access tokens use JwtAuthentication_ as implemented by the edx-drf-extensions library.
.. _Django Rest Framework (DRF): https://github.com/encode/django-rest-framework
.. _JwtAuthentication: https://github.com/edx/edx-drf-extensions/blob/master/edx_rest_framework_extensions/auth/jwt/README.rst
.. _JwtAuthentication: https://github.com/openedx/edx-drf-extensions/blob/master/edx_rest_framework_extensions/auth/jwt/README.rst

View File

@@ -91,10 +91,10 @@ unprotected microservices.
* a `feature toggle (switch)`_ named "oauth2.enforce_jwt_scopes" is enabled.
* **Note:** the toggle has since been retired with the equivalent of ``enforce_jwt_scopes`` value of True.
.. _edx-platform settings: https://github.com/edx/edx-platform/blob/master/lms/envs/docs/README.rst
.. _JwtBuilder: https://github.com/edx/edx-platform/blob/d3d64970c36f36a96d684571ec5b48ed645618d8/openedx/core/lib/token_utils.py#L15
.. _oauth_dispatch.views.AccessTokenView.dispatch: https://github.com/edx/edx-platform/blob/d21a09828072504bc97a2e05883c1241e3a35da9/openedx/core/djangoapps/oauth_dispatch/views.py#L100
.. _oauth_dispatch.validators: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/dot_overrides/validators.py
.. _edx-platform settings: https://github.com/openedx/edx-platform/blob/master/lms/envs/docs/README.rst
.. _JwtBuilder: https://github.com/openedx/edx-platform/blob/d3d64970c36f36a96d684571ec5b48ed645618d8/openedx/core/lib/token_utils.py#L15
.. _oauth_dispatch.views.AccessTokenView.dispatch: https://github.com/openedx/edx-platform/blob/d21a09828072504bc97a2e05883c1241e3a35da9/openedx/core/djangoapps/oauth_dispatch/views.py#L100
.. _oauth_dispatch.validators: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/dot_overrides/validators.py
4. Associate Available Scopes with Applications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -189,7 +189,7 @@ See 0007-include-organizations-in-tokens_ for decisions on this.
.. _function-based Django views: https://docs.djangoproject.com/en/2.0/topics/http/views/
.. _Django Rest Framework (DRF): http://www.django-rest-framework.org/
.. _Python decorator: http://www.django-rest-framework.org/tutorial/2-requests-and-responses/#wrapping-api-views
.. _JwtAuthentication: https://github.com/edx/edx-drf-extensions/blob/4569b9bf7e54a917d4acdd545b10c058c960dd1a/edx_rest_framework_extensions/auth/jwt/authentication.py#L17
.. _JwtAuthentication: https://github.com/openedx/edx-drf-extensions/blob/4569b9bf7e54a917d4acdd545b10c058c960dd1a/edx_rest_framework_extensions/auth/jwt/authentication.py#L17
Consequences

View File

@@ -119,8 +119,8 @@ organization information to the granting end-user.
values returned in their payloads by the specified filters.
.. _0006-enforce-scopes-in-LMS-APIs: 0006-enforce-scopes-in-LMS-APIs.rst
.. _Organization: https://github.com/edx/edx-organizations/blob/fa137881be9b7d330062bc32655a00c68635cfed/organizations/models.py#L14
.. _JwtBuilder: https://github.com/edx/edx-platform/blob/d3d64970c36f36a96d684571ec5b48ed645618d8/openedx/core/lib/token_utils.py#L15
.. _Organization: https://github.com/openedx/edx-organizations/blob/fa137881be9b7d330062bc32655a00c68635cfed/organizations/models.py#L14
.. _JwtBuilder: https://github.com/openedx/edx-platform/blob/d3d64970c36f36a96d684571ec5b48ed645618d8/openedx/core/lib/token_utils.py#L15
3. Organization Information in Authorization Approval Form
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -23,7 +23,7 @@ But to verify that the JWT was created by the OAuth Provider, the client should
sent along with the JWT. Since the secret is "symmetric" any OAuth Client that is privy to the secret
could also have just as easily created the JWT (thus spoofing the OAuth Provider).
.. _`Use JWT as OAuth2 Tokens; Remove OpenID Connect`: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0003-use-jwt-as-oauth-tokens-remove-openid-connect.rst
.. _`Use JWT as OAuth2 Tokens; Remove OpenID Connect`: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0003-use-jwt-as-oauth-tokens-remove-openid-connect.rst
Additionally, for clients that still use Open ID Connect, their `ID Tokens are HMACed with their own
client_secret`_ (privately shared with the OAuth Provider). Although this somewhat mitigates the issue
@@ -75,11 +75,11 @@ Additionally, **JWT_ISSUERS** is not intended to be used for key rotation. Rathe
keys should be specified as a `JSON Web Key Set (JWK Set)`_ instead. Thus, there would only be a single
issuer, but with (the potential of) multiple signing keys stored in a JWT Set.
.. _edx_rest_framework_extensions.settings: https://github.com/edx/edx-drf-extensions/blob/1db9f5e3e5130a1e0f43af2035489b3ed916d245/edx_rest_framework_extensions/settings.py#L73
.. _edx_rest_framework_extensions.settings: https://github.com/openedx/edx-drf-extensions/blob/1db9f5e3e5130a1e0f43af2035489b3ed916d245/edx_rest_framework_extensions/settings.py#L73
.. _JWT standard: https://tools.ietf.org/html/rfc7519
.. _issuer: https://tools.ietf.org/html/rfc7519#section-4.1.1
.. _JSON Web Key Set (JWK Set): https://tools.ietf.org/html/draft-ietf-jose-json-web-key-36#section-5
.. _site configuration: https://github.com/edx/edx-platform/blob/af841336c7e39d634c238cd8a11c5a3a661aa9e2/openedx/core/djangoapps/site_configuration/__init__.py
.. _site configuration: https://github.com/openedx/edx-platform/blob/af841336c7e39d634c238cd8a11c5a3a661aa9e2/openedx/core/djangoapps/site_configuration/__init__.py
Example Code
------------

View File

@@ -33,8 +33,8 @@ believe any decisions in this record will neither affect the current authenticat
apps nor impact forward compatibility when/if mobile apps are consolidated to use a similar (if not the same)
authentication mechanism as outlined here for web apps.
.. _Use JWT as OAuth2 Tokens: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0003-use-jwt-as-oauth-tokens-remove-openid-connect.rst
.. _Use Asymmetric JWTs: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0008-use-asymmetric-jwts.rst
.. _Use JWT as OAuth2 Tokens: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0003-use-jwt-as-oauth-tokens-remove-openid-connect.rst
.. _Use Asymmetric JWTs: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0008-use-asymmetric-jwts.rst
.. _Decoupled Frontend Architecture: https://openedx.atlassian.net/wiki/spaces/FEDX/pages/790692200/Decoupled+Frontend+Architecture
.. _microfrontend: https://micro-frontends.org/
@@ -92,8 +92,8 @@ Login -> Cookie -> API
.. _JWT_AUTH_COOKIE: https://github.com/GetBlimp/django-rest-framework-jwt/blob/master/docs/index.md#jwt_auth_cookie
.. _JSONWebTokenAuthentication: https://github.com/GetBlimp/django-rest-framework-jwt/blob/0a0bd402ec21fd6b9a5f715d114411836fbb2923/rest_framework_jwt/authentication.py#L71
.. _automatically extracts the JWT from the cookie: https://github.com/GetBlimp/django-rest-framework-jwt/blob/0a0bd402ec21fd6b9a5f715d114411836fbb2923/rest_framework_jwt/authentication.py#L86-L87
.. _JwtRedirectToLoginIfUnauthenticatedMiddleware: https://github.com/edx/edx-drf-extensions/blob/0351010f1836e4cebd6bdc757d477b2f56265b17/edx_rest_framework_extensions/auth/jwt/middleware.py#L76
.. _LoginRedirectIfUnauthenticated: https://github.com/edx/edx-drf-extensions/blob/0351010f1836e4cebd6bdc757d477b2f56265b17/edx_rest_framework_extensions/permissions.py#L147
.. _JwtRedirectToLoginIfUnauthenticatedMiddleware: https://github.com/openedx/edx-drf-extensions/blob/0351010f1836e4cebd6bdc757d477b2f56265b17/edx_rest_framework_extensions/auth/jwt/middleware.py#L76
.. _LoginRedirectIfUnauthenticated: https://github.com/openedx/edx-drf-extensions/blob/0351010f1836e4cebd6bdc757d477b2f56265b17/edx_rest_framework_extensions/permissions.py#L147
JWT Cookie Lifetime
@@ -124,7 +124,7 @@ JWT Cookie Lifetime
which will remove them from the user's browser cookie jar. Thus, the user will be logged out of all the
microfrontends.
.. _`current open edX session cookies that may have no expiration`: https://github.com/edx/edx-platform/blob/92030ea15216a6641c83dd7bb38a9b65112bf31a/common/djangoapps/student/cookies.py#L25-L27
.. _`current open edX session cookies that may have no expiration`: https://github.com/openedx/edx-platform/blob/92030ea15216a6641c83dd7bb38a9b65112bf31a/common/djangoapps/student/cookies.py#L25-L27
.. _JWT blacklist: https://auth0.com/blog/blacklist-json-web-token-api-keys/
.. _`JWT ID (jti)`: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#jtiDef
@@ -148,7 +148,7 @@ JWT Cookie Content
.. _HTTP Cookie RFC standard: https://tools.ietf.org/html/rfc6265
.. _up to 4096 bytes: https://tools.ietf.org/html/rfc6265#section-6.1
.. _Modern browsers have treated this requirement as a maximum: http://browsercookielimits.squawky.net/
.. _currently embedded in the JWT: https://github.com/edx/edx-platform/blob/92030ea15216a6641c83dd7bb38a9b65112bf31a/openedx/core/lib/token_utils.py#L13
.. _currently embedded in the JWT: https://github.com/openedx/edx-platform/blob/92030ea15216a6641c83dd7bb38a9b65112bf31a/openedx/core/lib/token_utils.py#L13
JWT Cookie Security
@@ -208,7 +208,7 @@ Consequences
.. _at least 4096 bytes: http://browsercookielimits.squawky.net/
.. _JWT sessionStorage and localStorage Security: https://stormpath. com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage#so-whats-the-difference
.. _JS-accessible user-info cookie: https://github.com/edx/edx-platform/blob/70d1ca474012b89e4c7184d25499eb87b3135409/common/djangoapps/student/cookies.py#L151
.. _JS-accessible user-info cookie: https://github.com/openedx/edx-platform/blob/70d1ca474012b89e4c7184d25499eb87b3135409/common/djangoapps/student/cookies.py#L151
References
----------

View File

@@ -23,7 +23,7 @@ Each backend service uses a unique SECRET_KEY to produce the CSRF token, so a CS
be valid for another service. Therefore, frontend apps served by different subdomains will not have access to these CSRF
token cookies.
.. _Transport JWT in HTTP Cookies: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0009-jwt-in-session-cookie.rst
.. _Transport JWT in HTTP Cookies: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0009-jwt-in-session-cookie.rst
.. _Django CSRF Protection: https://docs.djangoproject.com/en/2.1/ref/csrf/
Decisions
@@ -43,8 +43,8 @@ Decisions
Endpoint described above to obtain a valid CSRF token for the given backend service for which a request is
being made.
.. _edx-drf-extensions: https://github.com/edx/edx-drf-extensions
.. _@edx/frontend-auth: https://github.com/edx/frontend-auth
.. _edx-drf-extensions: https://github.com/openedx/edx-drf-extensions
.. _@edx/frontend-auth: https://github.com/openedx/frontend-auth
Rejected Alternatives
---------------------

View File

@@ -48,6 +48,6 @@ This would result in a JWT that contains the following, assuming these two scope
Note: Every JWT access token created using a given OAuth Application will include **all filters** defined for that application. This was also true as of the initial introduction of filters.
.. _EdxOAuth2AuthorizationView: https://github.com/edx/edx-platform/blob/9cf2f9f298e5e8be3b3abcaadaf0b7a96d0de0df/openedx/core/djangoapps/oauth_dispatch/dot_overrides/views.py#L16
.. _EdxOAuth2AuthorizationView: https://github.com/openedx/edx-platform/blob/9cf2f9f298e5e8be3b3abcaadaf0b7a96d0de0df/openedx/core/djangoapps/oauth_dispatch/dot_overrides/views.py#L16
.. _BOM-1291: https://openedx.atlassian.net/browse/BOM-1291
.. _Transport JWT in HTTP Cookies: 0007-include-organizations-in-tokens.rst

View File

@@ -34,7 +34,7 @@ The scope can be protected using the already existing `JwtHasScope`_ DRF permiss
The new filter permission class, ``JwtHasTpaProviderFilterForRequestedProvider``, will be implemented in edx-platform to start because it is only used by an edx-platform view, ``UserMappingView``. Additionally, the permission class is used in conjunction with other legacy permissions and it is simpler to keep all the tests together.
.. _More General Scope Filter Support: 0011-scope-filter-support.rst
.. _JwtHasScope: https://github.com/edx/edx-drf-extensions/blob/64f831d715d14dc2db5a1046201ff14e92fa7c9f/edx_rest_framework_extensions/permissions.py#L70
.. _JwtHasScope: https://github.com/openedx/edx-drf-extensions/blob/64f831d715d14dc2db5a1046201ff14e92fa7c9f/edx_rest_framework_extensions/permissions.py#L70
Consequences
------------
@@ -43,4 +43,4 @@ Consequences
* The complicated method of handling compound permissions, like `JWT_RESTRICTED_APPLICATION_OR_USER_ACCESS`_ from edx-drf-extensions, needs to be duplicated in edx-platform to properly handle Restricted Applications and ``JwtHasTpaProviderFilterForRequestedProvider``. Simplifying this design is being left to a later decision.
.. _JWT_RESTRICTED_APPLICATION_OR_USER_ACCESS: https://github.com/edx/edx-drf-extensions/blob/64f831d715d14dc2db5a1046201ff14e92fa7c9f/edx_rest_framework_extensions/permissions.py#L171
.. _JWT_RESTRICTED_APPLICATION_OR_USER_ACCESS: https://github.com/openedx/edx-drf-extensions/blob/64f831d715d14dc2db5a1046201ff14e92fa7c9f/edx_rest_framework_extensions/permissions.py#L171

View File

@@ -58,4 +58,4 @@ For migrating the mobile authentication flow from opaque Bearer access tokens to
* We need to check if the JWT was asymmetrically signed by the LMS. We want to ensure that a symmetrically signed JWT, created (signed) by another IDA, could not be compromised and used by an attacker to exchange for a session cookie, which would allow for full compromise of the user.
* Implementation will involve adding a method to ``edx-drf-extensions`` like ``get_decoded_jwt_from_auth``, but that will decode only asymmetric JWTs.
.. _ADR to add grant type in JWT payload: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0014-add-grant-type-in-jwt-payload.rst
.. _ADR to add grant type in JWT payload: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0014-add-grant-type-in-jwt-payload.rst

View File

@@ -120,5 +120,5 @@ to test other grant types if they are substituted in the appropriate places.
.. _OAuth2 standard: https://tools.ietf.org/html/rfc6749
.. _Google's OAuth2 Playground: https://developers.google.com/oauthplayground
.. _Authorization Code grant type: https://tools.ietf.org/html/rfc6749#section-4.1
.. _Restricted Application: https://github.com/edx/edx-platform/blob/dd136b457bc8a25892445fc4362ce02838179472/openedx/core/djangoapps/oauth_dispatch/models.py#L12
.. _Restricted Application: https://github.com/openedx/edx-platform/blob/dd136b457bc8a25892445fc4362ce02838179472/openedx/core/djangoapps/oauth_dispatch/models.py#L12
.. _localtunnel: https://localtunnel.github.io/www/

View File

@@ -35,7 +35,7 @@ class Command(BaseCommand):
length 'key-id-size' (unless you explicitly provide a "kid" of your own via
the 'key-id' option).
See https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0008-use-asymmetric-jwts.rst
See https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/docs/decisions/0008-use-asymmetric-jwts.rst
'''
def create_parser(self, *args, **kwargs): # pylint: disable=arguments-differ
@@ -144,7 +144,7 @@ class Command(BaseCommand):
print(" # The following is the string representation of a JSON Web Key Set (JWK set)")
print(" # containing all active public keys for verifying JWT signatures.")
print(
" # See https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/"
" # See https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/"
"docs/decisions/0008-use-asymmetric-jwts.rst"
)
print(" ")
@@ -172,7 +172,7 @@ class Command(BaseCommand):
print(" # The following is the string representation of a JSON Web Key (JWK)")
print(" # containing the single active private key for signing JSON Web Tokens (JWTs).")
print(
" # See https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/"
" # See https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/oauth_dispatch/"
"docs/decisions/0008-use-asymmetric-jwts.rst"
)
print(" ")

View File

@@ -3,7 +3,7 @@
"""
Deletes the ENFORCE_JWT_SCOPES waffle switch that has already been deprecated and removed.
See https://github.com/edx/edx-platform/pull/23188 for the removal
See https://github.com/openedx/edx-platform/pull/23188 for the removal
"""
from django.db import migrations

View File

@@ -10,7 +10,7 @@ from openedx.core.djangoapps.plugins.constants import ProjectType
class OlxRestApiAppConfig(AppConfig):
"""
Configuration for the olx_rest_api Django plugin application.
See: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/plugins/README.rst
See: https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/plugins/README.rst
"""
name = 'openedx.core.djangoapps.olx_rest_api'

View File

@@ -5,4 +5,4 @@ This app provides edx-platform specific constants and support for the Django Plu
It enables you to add a plugin to LMS or CMS, including ensuring Django signals work correctly between edx-platform and installed plugins.
.. _edx_django_utils/plugins: https://github.com/edx/edx-django-utils/tree/master/edx_django_utils/plugins
.. _edx_django_utils/plugins: https://github.com/openedx/edx-django-utils/tree/master/edx_django_utils/plugins

View File

@@ -29,7 +29,7 @@ class SettingsType():
values (in addition to ProjectType) to declare explicitly which settings
(in the specified project) they are extending.
See https://github.com/edx/edx-platform/master/lms/envs/docs/README.rst for
See https://github.com/openedx/edx-platform/master/lms/envs/docs/README.rst for
further information on each Settings Type.
"""

View File

@@ -12,4 +12,4 @@ Decision
It was decided to extract this plugin infrastructure to make it reusable. More info on this extraction can be found in `extraction decision doc`_ in edx-django-utils repository.
.. _extraction decision doc: https://github.com/edx/edx-django-utils/blob/master/docs/decisions/0002-extract-plugins-infrastructure-from-edx-platform.rst
.. _extraction decision doc: https://github.com/openedx/edx-django-utils/blob/master/docs/decisions/0002-extract-plugins-infrastructure-from-edx-platform.rst

View File

@@ -123,7 +123,7 @@ LOG_REQUEST_USER_CHANGES = getattr(settings, 'LOG_REQUEST_USER_CHANGES', False)
# .. toggle_warning: Logging headers of subsequent requests following a mismatch will only work if
# LOG_REQUEST_USER_CHANGES is enabled and ENFORCE_SAFE_SESSIONS is disabled; otherwise, only headers of the inital
# mismatch will be logged. Also, SAFE_SESSIONS_DEBUG_PUBLIC_KEY must be set. See
# https://github.com/edx/edx-platform/blob/master/common/djangoapps/util/log_sensitive.py
# https://github.com/openedx/edx-platform/blob/master/common/djangoapps/util/log_sensitive.py
# for instructions.
# .. toggle_use_cases: opt_in
# .. toggle_creation_date: 2021-12-22

View File

@@ -38,7 +38,7 @@ class ReturnGroup1PartitionScheme:
def get_group_for_user(cls, course_key, user, user_partition, assign=True): # pylint: disable=unused-argument
"""
The previous "allow" definition for verification was defined as 1, so return that.
Details at https://github.com/edx/edx-platform/pull/14913/files#diff-feff1466ec4d1b8c38894310d8342a80
Details at https://github.com/openedx/edx-platform/pull/14913/files#diff-feff1466ec4d1b8c38894310d8342a80
"""
return user_partition.get_group(1)

View File

@@ -286,7 +286,7 @@ def _create_and_set_jwt_cookies(response, request, cookie_settings, user=None):
# Skip setting JWT cookies for most unit tests, since it raises errors when
# a login oauth client cannot be found in the database in ``_get_login_oauth_client``.
# This solution is not ideal, but see https://github.com/edx/edx-platform/pull/19180#issue-226706355
# This solution is not ideal, but see https://github.com/openedx/edx-platform/pull/19180#issue-226706355
# for a discussion of alternative solutions that did not work or were halted.
if settings.FEATURES.get('DISABLE_SET_JWT_COOKIES_FOR_TESTS', False):
return

View File

@@ -11,7 +11,7 @@ from edx_toggles.toggles import WaffleSwitch
# .. toggle_description: Displays the maintenance warning, when active.
# .. toggle_use_cases: opt_in
# .. toggle_creation_date: 2018-03-20
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/17735
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/17735
DISPLAY_MAINTENANCE_WARNING = WaffleSwitch(
'open_edx_util.display_maintenance_warning', __name__
)

View File

@@ -27,7 +27,7 @@ class HLSPlaybackEnabledFlag(ConfigurationModel):
.. toggle_description: Add the "hls" profile to all displayed videos on the platform.
.. toggle_use_cases: open_edx
.. toggle_creation_date: 2017-04-19
.. toggle_tickets: https://github.com/edx/edx-platform/pull/14924
.. toggle_tickets: https://github.com/openedx/edx-platform/pull/14924
"""
# this field overrides course-specific settings
enabled_for_all_courses = BooleanField(default=False)
@@ -76,7 +76,7 @@ class CourseHLSPlaybackEnabledFlag(ConfigurationModel):
.. toggle_description: Add the "hls" profile to all displayed videos for a single course.
.. toggle_use_cases: open_edx
.. toggle_creation_date: 2017-04-19
.. toggle_tickets: https://github.com/edx/edx-platform/pull/14924
.. toggle_tickets: https://github.com/openedx/edx-platform/pull/14924
"""
KEY_FIELDS = ('course_id',)

View File

@@ -18,7 +18,7 @@ LOG_PREFIX = 'Videos: '
# to YouTube as part of the video pipeline.
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2018-08-03
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/18765
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/18765
DEPRECATE_YOUTUBE = CourseWaffleFlag(f'{WAFFLE_NAMESPACE}.deprecate_youtube', __name__, LOG_PREFIX)
# .. toggle_name: videos.enable_devstack_video_uploads
@@ -31,7 +31,7 @@ DEPRECATE_YOUTUBE = CourseWaffleFlag(f'{WAFFLE_NAMESPACE}.deprecate_youtube', __
# .. toggle_creation_date: 2020-03-12
# .. toggle_warning: Enabling this feature requires that the ROLE_ARN, MFA_SERIAL_NUMBER, MFA_TOKEN settings are
# properly defined.
# .. toggle_tickets: https://github.com/edx/edx-platform/pull/23375
# .. toggle_tickets: https://github.com/openedx/edx-platform/pull/23375
ENABLE_DEVSTACK_VIDEO_UPLOADS = WaffleFlag(f'{WAFFLE_NAMESPACE}.enable_devstack_video_uploads', __name__, LOG_PREFIX)
ENABLE_VEM_PIPELINE = CourseWaffleFlag( # lint-amnesty, pylint: disable=toggle-missing-annotation

View File

@@ -23,7 +23,7 @@ class VEMPipelineIntegration(ConfigurationModel):
video pipeline.
.. toggle_use_cases: open_edx
.. toggle_creation_date: 2020-06-04
.. toggle_tickets: https://github.com/edx/edx-platform/pull/24093
.. toggle_tickets: https://github.com/openedx/edx-platform/pull/24093
"""
client_name = models.CharField(
max_length=100,
@@ -64,7 +64,7 @@ class VideoUploadsEnabledByDefault(ConfigurationModel):
enables the "Video Uploads" menu in the CMS.
.. toggle_use_cases: open_edx
.. toggle_creation_date: 2017-11-10
.. toggle_tickets: https://github.com/edx/edx-platform/pull/16536
.. toggle_tickets: https://github.com/openedx/edx-platform/pull/16536
"""
# this field overrides course-specific settings
enabled_for_all_courses = models.BooleanField(default=False)
@@ -114,7 +114,7 @@ class CourseVideoUploadsEnabledByDefault(ConfigurationModel):
"Video Uploads" menu in the CMS.
.. toggle_use_cases: open_edx
.. toggle_creation_date: 2017-11-10
.. toggle_tickets: https://github.com/edx/edx-platform/pull/16536
.. toggle_tickets: https://github.com/openedx/edx-platform/pull/16536
"""
KEY_FIELDS = ('course_id',)

View File

@@ -16,7 +16,7 @@ Decision
These utilities will be be moved to `edx/edx-toggles`_ so that they can be used by other IDAs. Additionally, the shared library will use the module name ``toggles``, rather than ``waffle_utils``, so it can more generally include non-waffle based toggle utilities as well.
.. _edx/edx-toggles: https://github.com/edx/edx-toggles
.. _edx/edx-toggles: https://github.com/openedx/edx-toggles
Consequences
============
@@ -31,5 +31,5 @@ Consequences
* The helper `get_instance_module_name`_ should probably move to `edx_django_utils/monitoring/code_owner`_. It could be considered hacky, but is quite useful. It needs to work whether the class definition is in a library or an IDA, and whether the instance declaration is in a library or an IDA.
.. _get_instance_module_name: https://github.com/edx/edx-platform/blob/a8c3413a32510dc45301d0c462bf706a5f7ba487/openedx/core/djangoapps/waffle_utils/__init__.py#L521
.. _edx_django_utils/monitoring/code_owner: https://github.com/edx/edx-django-utils/tree/master/edx_django_utils/monitoring/code_owner
.. _get_instance_module_name: https://github.com/openedx/edx-platform/blob/a8c3413a32510dc45301d0c462bf706a5f7ba487/openedx/core/djangoapps/waffle_utils/__init__.py#L521
.. _edx_django_utils/monitoring/code_owner: https://github.com/openedx/edx-django-utils/tree/master/edx_django_utils/monitoring/code_owner

View File

@@ -17,7 +17,7 @@ Additionally, the fully qualified waffle name, including the namespace, is requi
Lastly, the namespace classes contain a lot of logic, but in effect, they only are used to ensure the flag name has a prefix like '<NAMESPACE_NAME>.<FLAG_NAME>'.
.. _example switch in ecommerce: https://github.com/edx/ecommerce/blob/e899c78325ac492d0a2b1ea0aab4d5e230262b8f/ecommerce/extensions/dashboard/users/views.py#L21
.. _example switch in ecommerce: https://github.com/openedx/ecommerce/blob/e899c78325ac492d0a2b1ea0aab4d5e230262b8f/ecommerce/extensions/dashboard/users/views.py#L21
Decision
========

View File

@@ -129,8 +129,8 @@ def get_handler_url(request, usage_key_str, handler_name):
# We cannot use DRF for this endpoint because its Request object is incompatible
# with the API expected by XBlock handlers.
# See https://github.com/edx/edx-platform/pull/19253
# and https://github.com/edx/XBlock/pull/383 for context.
# See https://github.com/openedx/edx-platform/pull/19253
# and https://github.com/openedx/XBlock/pull/383 for context.
@csrf_exempt
@xframe_options_exempt
def xblock_handler(request, user_id, secure_token, usage_key_str, handler_name, suffix=None):

View File

@@ -14,7 +14,7 @@ def plugin_settings(settings):
.. toggle_warning: TinyMCE is needed to show an editor in the studio.
.. toggle_use_cases: open_edx
.. toggle_creation_date: 2017-11-08
.. toggle_tickets: https://github.com/edx/edx-platform/pull/16496
.. toggle_tickets: https://github.com/openedx/edx-platform/pull/16496
"""
settings.FEATURES['ENABLE_ANNOUNCEMENTS'] = False
# Configure number of announcements to show per page

Some files were not shown because too many files have changed in this diff Show More