Comparing changes between upstream-maple and wikimedia's develop branch. - #582
Draft
ahmed-arb wants to merge 6658 commits into
Draft
Comparing changes between upstream-maple and wikimedia's develop branch.#582ahmed-arb wants to merge 6658 commits into
ahmed-arb wants to merge 6658 commits into
Conversation
Refactors downstream links API to handle multiple filters using a single API. Also adds a new route to return summary of library links for a given course.
version bump Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
…-enterprise-711d6aa feat: Upgrade Python dependency edx-enterprise
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
fix ECU table backfill command to also backfill historical table. Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
fix ECU table backfill command. Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
…enedx#35577) * feat!: upgrading api to DRF.
…x#36378) If a course is deleted or unpublished, the CourseEnrollment list serializer was causing a AttributeErrors when called for a learner who had been enrolled in the formerly-existing course. Why no test? Because cache invalidation is the worst problem. tl;dr I could create a mock response for the `course_overview` property, but if I mocked up a response to the queryset filter in `CourseEnrollmentsApiListView`, I was effectively guessing that my code worked correctly and then creating a mock response that was an assertion of correctness. That would make any mocked test deceptive; it would appear to test behavior but it would actually just test that I had constructed a mock that passed the test. I wanted to make an actual test for what would happen if a Course was deleted, so I made one character code fix, and then spent two days unsuccessfully attempting to completely clear out the ModuleStore so I could actually test what would happen in this instance. IMO an actual verification by hand (which I performed, and it works) was the better part of valor. in short, cache invalidation aaaaaaaaargh. FIXES: APER-3913
chore: upgrade optimizely-sdk to the latest version Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
Merge pull request openedx#36387 from openedx/iamsobanjaved/upgrade-optimizely-sdk-0c7846c
…ss, fix types [FC-0083] (openedx#36381) * refactor: convert libraries API from attr.s to dataclass, fix types * fix: make corresponding updates to 'search' code
…enedx#36202)" (openedx#36393) This reverts commit 72959ad.
…l to 2MB (openedx#36397) Co-authored-by: M Umar Khan <umar.khan@A006-01609.local>
Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master` Co-authored-by: kiram15 <31229189+kiram15@users.noreply.github.com>
Adds group_uuid field to enterprise group membership api payload. Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
…x#36395) Specifically to bump the versions for edx-sga and lti-consumer-xblock
…dx-enterprise-d1415bd feat: Upgrade Python dependency edx-enterprise
* feat: add country disabling feature in embargo app * revert: disabled countries list in env * fix: resolved linter issues --------- Co-authored-by: Hassan Raza <h.raza@192.168.1.12>
fix all endpoints that were currently breaking with the discussion xblock. Co-authored-by: Taimoor Ahmed <taimoor.ahmed@A006-01434.local>
Co-authored-by: Taimoor Ahmed <taimoor.ahmed@A006-01434.local>
…ls (#565) * feat: added patches + updated model for bulk email skip/failure details * chore: remove unneeded workflows
* feat: update intructor dashboard reports and permissions * refactor: simplified changes and moved to django plugin app * refactor: removed scss from edx-platform and moved to theme
Asset filenames with non-ASCII characters were progressively corrupted in rendered unit HTML, e.g. an image named "Día.jpg" would render with a src of ...block@D%252525C3%252525ADa.jpg and fail to load. StaticContent.get_canonicalized_asset_path encodes the asset path with quote_plus, which does not treat '%' as a safe character. Studio re-runs this function over its own output on every load/save cycle (get_block_info -> replace_static_urls), so each cycle re-encodes the existing percent signs: the 'í' in "Día" (UTF-8 %C3%AD) degrades into %25C3%25AD, then %2525C3%2525AD, and so on, leaving broken <img> links. Fully percent-decode the path before re-encoding so canonicalization is idempotent: an already-canonicalized path now resolves to the same asset and produces the same single-encoded output. Decoding before the asset lookup also lets locked/digest/CDN handling find the real file instead of a key that still contains literal '%' characters. unquote (not unquote_plus) is used so the '+' separators in opaque asset keys are preserved. Add a management command, repair_asset_url_encoding, to heal content already stored corrupted: it scans the data-bearing blocks of one or more courses, fully decodes over-encoded static/asset URLs, and rewrites course-owned absolute asset links back to the portable /static/<filename> form. It is a dry run unless --commit is passed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The repair command only handled multiply percent-encoded links, where the non-ASCII bytes survive and can be decoded. A second corruption exists where the non-ASCII character was dropped entirely (e.g. "climática" -> "climtica"), so the link points at a filename that does not exist while the real asset still carries the accent. Those references contain no information to decode, so the first pass correctly left them alone -- and broken. Add an asset-matching pass: for each course, build an index of the real asset filenames from the contentstore and, when a decoded reference does not exist, repoint it at the asset whose name with non-ASCII characters removed equals the broken reference (the deterministic inverse of the corruption). Matches must be unique; ambiguous or unmatched references are reported as WARN lines and left untouched for manual review. repair_text now returns (new_data, replacements, warnings) and normalize_asset_url returns (new_url, status). Tests cover ascii_fold, AssetIndex.resolve (ok / matched / ambiguous / unmatched) and the repoint-and-warn behaviour. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ackport fix: Backported openedx#36820 to fix discussion threads
…-encoding fix: make static asset URL canonicalization idempotent
fix: instructor dashboard fixes
…ctor-Certification-Generation-CSV Fix: Instructor Issued Certificates, report links and columns in csv
The previous version returned early for courses whose topics were already
correctly linked ("healthy"), so it never seeded ForumUser records or
recomputed stats for them. Those courses were left with an empty Learners tab
(and could still 404 on the stats endpoint if any stat-bearing user lacked a
ForumUser). Only courses that happened to have orphaned topics got the user
seeding and stats recompute.
Drop the early return so that every course with threads seeds ForumUser
records for its enrolled users and recomputes per-course stats, regardless of
whether any topics needed reconnecting. Courses with no threads still return
early. Report status as "stats-refreshed" (or "would-refresh-stats" in
dry-run) when no topic changes were needed.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix: guard against None/empty input in clean_dangerous_html
update_unit_discussion_state_from_discussion_blocks runs after the course has already been cloned successfully. Anything it raises reaches the catch-all in rerun_course, which marks the rerun failed and deletes the destination course, losing a complete clone over an optional migration. Log and continue instead. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…sion-migration-failure fix: do not discard a cloned course when discussion migration fails
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Comparing changes