Skip to content

Conversation

Xsy41
Copy link

@Xsy41 Xsy41 commented Jun 28, 2025

Description

Describe what this pull request changes, and why. Include implications for people using this change.
Design decisions and their rationales should be documented in the repo (docstring / ADR), per
OEP-19, and can be
linked here.

Useful information to include:

  • Which edX user roles will this change impact? Common user roles are "Learner", "Course Author",
    "Developer", and "Operator".
  • Include screenshots for changes to the UI (ideally, both "before" and "after" screenshots, if applicable).
  • Provide links to the description of corresponding configuration changes. Remember to correctly annotate these
    changes.

Supporting information

Link to other information about the change, such as Jira issues, GitHub issues, or Discourse discussions.
Be sure to check they are publicly readable, or if not, repeat the information here.

Testing instructions

Please provide detailed step-by-step instructions for testing this change.

Deadline

"None" if there's no rush, or provide a specific date or event (and reason) if there is one.

Other information

Include anything else that will help reviewers and consumers understand the change.

  • Does this change depend on other changes elsewhere?
  • Any special concerns or limitations? For example: deprecations, migrations, security, or accessibility.
  • If your database migration can't be rolled back easily.

awais786 and others added 30 commits September 20, 2024 17:06
* feat: upgrading simple api to drf compatible.
* feat: Be able to login to bare-metal studio easily.

Updating the documentation and the devstack.py files so that if you're
running bare-metal you can easily setup studio login via the LMS.

I also added the Ports that the various MFEs expect to the runserver
scripts so that it's easier to run those locally as well.

Co-authored-by: Kyle McCormick <[email protected]>
…C-0047/feature/implement-push-notifications-chanel

feat: [FC-0047] add mobile push notifications functionality
…penedx#35522)

* chore: update default notification preference for ora_grade_assigned

* test: updated tests
This code does not have any dependencies that are specific to any specific
version of ubuntu.  So instead of testing on a specific version and then needing
to do work to keep the versions up-to-date, we switch to the ubuntu-latest
target which should be sufficient for testing purposes.

This work is being done as a part of openedx/platform-roadmap#377

closes openedx#35314
This is no longer installed by default on ubuntu and so we have to
either manually install it or just run the relevant commands in the
container here it's already available. This lets us do some of the test
setup in a more robust way.
We stopped using mongo on the runner directly a while ago so this is
just an errant start that should have been removed.
Operators Note: In newer versions of ubuntu the MD4 hashing algorithm
is disabled by default.  To enable it the openssl config needs to be
updated in a manner similar to what's being done here.  Alternatively,
you can set the `FEATURES['ENABLE_BLAKE2B_HASHING']` setting to `True`
which will switch to a newer hashing algorithm where MD4 was previously
used.

Because this hashing is being used as a part of the edx-platform caching
mechanism, this will effectively clear the cache for the items that use
this hash. The will impact any items where the cache key might have been
too big to store in memcache so it's hard to predict exactly which items
will be impacted.

BREAKING CHANGE: See the operator note above for more details as this
may break for users transitioning from Ubuntu 20.04 to newer versions.
* fix: updated edx.ace.message_sent event

* fix: fixed pylint checks
Enabling the rounding in openedx#16837 has been causing noticeable (up to 1 percentage
point) differences between non-rounded subsection grades and a total grade for
a course. This increases the grade precision to reduce the negative
implications of double rounding.
…ring-settings-link

fix: fix broken proctoring settings link in studio
…o-admin-verification-attempt

feat: add verification attempt to django admin
* feat: added country disabling feature
…edx#35532)

When serializing to OLX, the Learning Core runtime wraps HTML content in
CDATA to avoid having to escape every individual `<`, `>`, and `&`. The
runtime also puts newlines around the content within the CDATA,
So, given HTML content `...`, we get `<![CDATA[\n...\n]]>`.

The problem is that every time you serialize an HTML block to OLX, it
adds another pair of newlines. These newlines aren't visible to the end
users, but they do make it so that importing and exporting content never
reached a stable, aka "canonical" form. It also makes unit testing
difficult, because the value of `html_block.data` becomes a moving
target.

We do not believe these newlines are necessary, so we have removed them
from the `CDATA` block, and added a unit test to ensure that HTML blocks
having a canonical serialization.

Closes: openedx#35525
Bump the version to drop references to edx-rest-api-client that don't exist in the latest version.

Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: feanil <[email protected]>
* refactor: use django signals to trigger LIBRARY_COLLECTION events

* refactor: use collection usage_key as search document id

This change standardises the search document "id" to be a meilisearch ID
generated from the usage key, for all types of indexed objects.

This is important for collections so we can locate the collection
document in the search index solely from the data provided by the
LIBRARY_COLLECTION_DELETED event (library_key + collection_key), even if
the collection has been deleted from the database.

* refactor: avoid fetching more data than we have to.

* get_library_collection_usage_key and
  searchable_doc_tags_for_collection do not need a Collection object;
  the usage key can be created from the library_key and collection_key.

* updated searchable_doc_for_collection to require the parts of the
  collection usage key + an optional collection. This allows us to
  identify the collection's search document from its usage key without
  requiring an existing Collection object (in case it's been deleted).
  Also removes the edge case for indexing Collections not associated
  with a ContentLibrary -- this won't ever really happen.

* feat: remove soft- and hard-deleted collections from search index

* feat: adds library_component_usage_key to content_libraries.api

* refactor: send CONTENT_OBJECT_ASSOCIATON_CHANGED on django model signals

so that added/removed collections are removed/re-added to component documents.

Special case: When a collection is soft-deleted/restored, we detect this
in the search index and update the collection's component documents
directly, without a CONTENT_OBJECT_ASSOCIATON_CHANGED signal.


* chore: bumps openedx-learning to 0.13.0
* Adds an extension point when generating the url for id verification
asadali145 and others added 30 commits November 25, 2024 13:23
[Backport] fix: bypass access checks when populating course blocks cache
This PR changes the permissions for content libraries so that only
people who can create courses should be allowed to create new content
libraries.
This commit introduces the new Forum V2 application, allowing users to choose between the legacy Forum V1 and the new Forum V2 at the course level.

Key Changes:
- Added waffle flag `discussions.enable_forum_v2` to enable Forum V2 for selected courses, allowing coexistence with Forum V1.
- Default data storage for Forum V2 is set to MongoDB, with an option to switch to MySQL using the waffle flag `forum_v2.enable_mysql_backend`.
- Introduced management command `forum_migrate_course_from_mongodb_to_mysql` for per-course data migration from MongoDB to MySQL.

Note: This PR does not include all unit tests for the Forum V2 native API due to ongoing migration efforts. Further updates will follow to ensure full test coverage before final release.

Co-authored-by: [Muhammad Faraz Maqsood] <[email protected]>
Co-authored-by: [Ali Salman] <[email protected]>
To reproduce the error:
- switch to mongodb from mysql for a specific course.
- create a thread and report the thread. It'll throw an error due to wrong positioning of the arguments.

So, this commit
- uses keyword arguments in flag APIs
- adds mock tests for code coverage
…dx#35981)

Backported because this fixes an issue where large instances couldn't use this command/feature at all.
…#35942)

This change addresses an issue reported while testing Sumac, where the API V2 is on by default in the authoring MFE: openedx/wg-build-test-release#428. It fails when retrieving an empty list of courses with the queryparams api/contentstore/v2/home/courses?page=1&order=display_name. When this was implemented, the course authoring MFE rendered the empty lists only with page=1 query param (didn't do any filtering/ordering by default), which was later changed to page=1&order=display_name which now ordered by default.

This issue occurs because all the filtering and ordering are done under the assumption that course_overviews is always a query set. However, that's only true when there are courses available and CourseOverview.get_all_courses is used. When not, an empty list is returned instead, raising a 500 error in Studio.
The previous pattern for matching was too broad and would break
the rendering of assets that were prefixed with "xblock".
We're still running with 3.11 in sumac so we should be building the docs
with python 3.11
We introduce a setting that allows us to bypass any course waffle flag
check. The advantage of such a setting is that we don't need to find the
course ID: in some cases, we might not have access to the course ID, and
we need to look for it... in forum v2.

See discussion here: openedx/forum#137
This should fix an issue with index creation on edX.org.
When checking whether forum v2 is enabled, the course waffle flag
argument should be a CourseKey, not a str.
The Zooming Image Tool does not load properly, currently, and even if it
did, relying on an external Javascript to function across releases is
not something we can support.  Thus, we remove it from the list of HTML
block templates until such time as a more robust solution is found.
This recreates the Zooming Image Tool template for the HTML block.  It
does it in such a way that doesn't depend on any external resources:
both the loupe code and sample image are inlined.

Some benefits to this version are:

* We can now maintain the loupe javascript code properly

* Because the javascript is included in the contents of the block
  itself, the course author can customize it as needed

* As opposed to the previous iteration, the magnified image URL is now
  optional: if it's not present, the regular image will be used for
  magnification

* There can now be two or more instances of the tool in the same unit.

This also removes some CSS left over from the previous iteration.
…enedx#36240)

* fix: render library v2 assets with whitespace (openedx#35974)

Assets that contain whitespace fail to be rendered when uploaded to library v2

* fix: static assets used in problem bank and library content block (openedx#36173)

Static assets were not being copied into the course when using library content via Problem Bank or "Add Library Content" workflows.
)

* chore: upgrade Django to 4.2.19

* chore: compile requirements
…#36094) (openedx#36288)

Updates the StudioHome API's allow_to_create_new_org to require both organization-creation permissions and ORGANIZATION_AUTOCREATE to be enabled. It also adds the list of "allowed organizations for libraries" to the Studio Home API so that the Authoring MFE can use it.

(cherry picked from commit ec7134d2848497e51d562719c74089a32e513b1e)
…c-4.2.20

chore: update Django to 4.2.20 for Sumac - Security Patch
* fix: discussion xblock not compatible with forum v2 (openedx#36315)

fix all endpoints that were currently breaking with the discussion xblock.

Co-authored-by: Taimoor  Ahmed <[email protected]>

* fix: legacy discussion issues (openedx#36433)

Explicitly passed course_id to all views

* fix: legacy forum issues (openedx#36470)

Co-authored-by: Taimoor  Ahmed <[email protected]>

* build: Switch off deprecated C-Hive NPM cache (openedx#36502)

JS tests are failing because we are using a discontinued GHA caching service:
https://github.blog/changelog/2025-03-20-notification-of-upcoming-breaking-changes-in-github-actions/#decommissioned-cache-service-brownouts

This service is used by the unsupported C-Hive caching action which we are
relying on: https://github.com/c-hive/gha-npm-cache

We are switching to the supported caching mechanims which is provided by
setup-node:
https://github.com/actions/setup-node?tab=readme-ov-file#caching-global-packages-data

* Merge pull request openedx#35713 from openedx/feanil/ubuntu-24.04

feanil/ubuntu 24.04

---------

Co-authored-by: Taimoor Ahmed <[email protected]>
Co-authored-by: Taimoor  Ahmed <[email protected]>
Co-authored-by: Ali Salman <[email protected]>
Co-authored-by: Kyle McCormick <[email protected]>
Co-authored-by: Feanil Patel <[email protected]>
Allow overriding but prevent download by default.

Also, extract `PYTHON_LIB_FILENAME` Django setting as a shared function
and document the setting.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.