* refactor: moved remaining feature dicts settings into top-level settings.
* refactor: moved remaining feature dicts settings into top-level settings.
* fix: fixed the test files
* fix: fixed tehe pylint errors
* fix: fixation of the cms ci failure
* fix: fixed remaining feature settings for cms
* fix: added fix for requirements
* fix: added fix for lms tests
* fix: resolved the test views issue
* fix: configured views file and test_views
* fix: fixed lint errors and assertion issues
* fix: added fix for base url issue in test view
* fix: added fix for base_url and assertion issue
* fix: added configurations for base utl fix
* fix: handled none issue for mfe config
* fix: corrected override settings in test views
* fix: added getattr defensive technique for view settings
* fix: reverted views and test_views file
* fix: added settings in views file
* fix: added with patch within functions in test view
* fix: rearranged the features in default_legacy_config
* fix: fixing the tests with clearing cache
* fix: reverted test views to verify the CI check
* fix: added cache clear in mfe config test
* fix: fixed the patch toggles to override settings
* fix: fixed the lint errors
* fix: changed patch toggle to override settings
* feat: return response merged from base config, mfe config and mfe overrides
* test: adjust existing tests
* test: add new test methods
* fix: add blank line
* fix: remove homepage_overlay_html
* fix: typo in a comment
* test: change dict merge order to follow the correct hierarchy
* fix: change response keys to uppercase
* fix: add enable_course_discovery
* fix: change COURSES_ARE_BROWSABLE to NON_BROWSABLE_COURSES
* fix: remove show_homepage_promo_video
* fix: use None as default for promo video youtube id
* docs: expand docstrings, rename method/variables
* fix: remove is_cosmetic_price_enabled field
* This changes the API's path. The reasoning is that this is Version 1 of
the mfe_config API, not Version 1 of the LMS's entire API, so the v1
should come after mfe_config.
* Why does this matter? Firstly, consistency. Secondly, it affects our
generated API documentation. If you visited
https://courses.edx.org/api-docs, you could see that the API was
listed under "v1" instead of "mfe_config".
No functional changes here. This just uses the edx_api_doc_tools package
to add some additional documentation to the new API. The documentation
can be read from the code, or viewed by visiting
http://<LMS_ROOT>/api-docs and searching for "mfe_config".
Formerly, the settings were:
* `MFE_CONFIG` for common config.
* `MFE_CONFIG_<APP_ID>` for app-specific overrides,
with each app getting its own Django setting.
This commit changes it to:
* `MFE_CONFIG` for common config (unchanged)
* `MFE_CONFIG_OVERRIDES` for app-specific overrides,
where each app gets a top-level key in the dictionary.
Why the change?
* We want common.py to have a complete list of overridable settings, as
it helps operators reason about configuration and allows us to generate
config documentation using toggle annotations. Dynamically generating
setting names based on arbitrary APP_IDs makes this impossible.
* getattr(...) generally makes code more complicated bug prone. Tools
like pylint and mypy cannot effectively analyze any code that uses
dynamic attribute access.