Skip to content

DO NOT MERGE - DO NOT CLOSE - Dummy PR to track upstream master#824

Draft
kaustavb12 wants to merge 647 commits into
open-craft:kaustav/downstream_pr_targetfrom
openedx:master
Draft

DO NOT MERGE - DO NOT CLOSE - Dummy PR to track upstream master#824
kaustavb12 wants to merge 647 commits into
open-craft:kaustav/downstream_pr_targetfrom
openedx:master

Conversation

@kaustavb12

@kaustavb12 kaustavb12 commented Feb 6, 2026

Copy link
Copy Markdown
Member

Settings

AN_IMPORTANT_NOTICE: |
  ##########################################
  This is the OpenCraft Sandbox (sandbox.opencraft.com) tracking upstream master.
  Please do not delete or modify this instance without checking with Fox first.
  ##########################################
PLATFORM_NAME: OpenCraft Sandbox
LMS_HOST: sandbox.opencraft.com
CMS_HOST: studio.sandbox.opencraft.com
PREVIEW_LMS_HOST: preview.sandbox.opencraft.com
GROVE_NEW_MFES:
  catalog:
    port: 1998
    repository: https://github.com/openedx/frontend-app-catalog.git
    version: master
GROVE_SIMPLE_THEME_BRANCH: sandbox
GROVE_SIMPLE_THEME_REPO: https://github.com/open-craft/brand-openedx.git
GROVE_COMMON_SETTINGS: |
  CATALOG_MICROFRONTEND_URL = 'https://apps.sandbox.opencraft.com/catalog'
  ENABLE_CATALOG_MICROFRONTEND = True
  DEFAULT_COURSE_VISIBILITY_IN_CATALOG = 'about'
GROVE_MFE_LMS_COMMON_SETTINGS: |
  MFE_CONFIG['LOGO_URL'] = 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/logo.png'
  MFE_CONFIG['LOGO_TRADEMARK_URL'] = 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/logo-trademark.png'
  MFE_CONFIG['LOGO_WHITE_URL'] = 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/logo-white.png'
  MFE_CONFIG['FAVICON_URL'] = 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/favicon.ico'
  MFE_CONFIG_OVERRIDES['learner-dashboard'] = {'LOGO_URL': 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/logo-white.png'}
  MFE_CONFIG_OVERRIDES['catalog'] = {'LOGO_URL': 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/logo-white.png'}
  MFE_CONFIG_OVERRIDES['profile'] = {'LOGO_URL': 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/logo-white.png'}
  MFE_CONFIG_OVERRIDES['account'] = {'LOGO_URL': 'https://raw.githubusercontent.com/open-craft/brand-openedx/refs/heads/sandbox/logo-white.png'}
OPENEDX_EXTRA_PIP_REQUIREMENTS:
- git+https://gitlab.com/opencraft/dev/openedx-auto-studio.git@fox/activation-edge-case
- git+https://github.com/open-craft/openedx-edit-links.git@main
- xblock-problem-builder
CONTACT_EMAIL: help@opencraft.com

Tutor requirements

tutor plugins enable sandbox
tutor plugins enable grove-simple-theme
tutor generate-tokens

@kaustavb12
kaustavb12 marked this pull request as draft February 6, 2026 08:34
@open-craft open-craft locked and limited conversation to collaborators Feb 10, 2026
@kaustavb12 kaustavb12 changed the title test: DO NOT MERGE - Dummy PR to track upstream master DO NOT MERGE - DO NOT DELETE - Dummy PR to track upstream master Apr 7, 2026
@kaustavb12 kaustavb12 changed the title DO NOT MERGE - DO NOT DELETE - Dummy PR to track upstream master DO NOT MERGE - DO NOT CLOSE - Dummy PR to track upstream master Apr 7, 2026
irfanuddinahmad and others added 16 commits May 8, 2026 15:46
…ails

feat: Drop support for the legacy Schedule and Details page.
feat: enterprise 8.0.9

Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
* fix: Return 403 when a masqueraded user attempts to access instructor dashboard

* fix: Address PR feedback
* feat: add generate exception certificates modal

* feat: add tests

* fix: tests

* fix: linting
The legacy Certificates page in Studio has been replaced with a new
view in the Authoring MFE. This change removes the now unused
JS/HTML/Python related to the old page.

This work is part of #36108

BREAKING CHANGE: The 'legacy_studio.certificates' waffle flag will no
longer be respected. The system will behave as if the flag is set to
false permanently.
feat: Drop support for the legacy Certificates page.
The legacy Course Team page in Studio has been replaced with a new view
in the Authoring MFE. This change removes the now unused JS/HTML/Python
related to the old page.

This work is part of #36108

BREAKING CHANGE: The 'legacy_studio.course_team' waffle flag will no
longer be respected. The system will behave as if the flag is set to
false permanently.
feat: Drop support for the legacy Course Team page.
…ages

Remove JS models, views, spec files, and Underscore templates that were
exclusively used by the legacy Grading and Schedule Details pages, which
were dropped in prior commits.

This work is part of #36108

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: replace enterprise username import in progress/views.py with pluggable_override
This was part of the old static assets builds pipeline.
Its implementation was removed back in ~Redwood.
This is just a dangling pointer which would result
in `File not found` if anyone tried to run it.
Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: bcitro <67378070+bcitro@users.noreply.github.com>
…ding-cleanup

chore: Fixed remaining code after depr 36108 schedule grading cleanup
feanil and others added 30 commits July 17, 2026 13:24
Discussion thread titles (and other user-controlled context fields —
replier_name, author_name, username) were interpolated raw into
notification.content via `str.format(**context)`. That output is
rendered with Django's `|safe` filter in digest_content.html, which
is included by both the email_digest and batched_email body
templates, so a `<style>` block in a thread title survived into
recipient inboxes as executable CSS on email open — enabling
open-tracking, content spoofing, and phishing.

Escape at the source: in `get_notification_content`, wrap every
context value with `django.utils.html.escape` before
`template.format(**context)`, exempting the two structural keys
(`p`, `strong`) that content_templates use as HTML tag names. This
defends every renderer of `notification.content` in one place.

This is the incomplete-patch companion of GHSA-4xv3-5j4x-q8g4
(CVE-2026-42857), which sanitized the post body via
`clean_thread_html_body()` but did not cover the title path.
Fixes GHSA-rv5w-f4r5-h77g.
`startswith` is the wrong primitive for "is target inside directory base":
once a trailing separator drops anywhere along the way, sibling directories
whose names extend base match. We could spot-fix by re-appending the
separator before the check, but `commonpath` makes the directory-boundary
intent explicit and removes the failure mode entirely.

Fixes GHSA-6cmm-8875-5pcw.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…n test

Exempt users returned early before UserProfile.objects.get_or_create,
so users without a profile never got one created on login while
PREVENT_CONCURRENT_LOGINS was enabled. Move the exemption check to
only skip set_login_session, and add coverage for SINGLE_LOGIN_EXEMPT_GROUPS
and for client1 remaining authenticated after a concurrent login.
…ashboard view

The dashboard-view GET added to test_single_session_exempt_user passed
locally but failed in CI's shared-with-cms-1 job (400 instead of 200),
likely from unrelated view-layer state (MFE redirect flags, site config)
picked up when run alongside the rest of that shard. Assert against
Session.objects directly instead -- that's the actual mechanism
set_login_session uses to evict a session, so it verifies the same
thing without depending on the dashboard view rendering successfully.
Each unit-test shard was printing a ~3,700-line per-file coverage
table at the end of its log (the default `--cov=.` behavior is
`--cov-report=term`). The numbers are also misleading per shard
because each shard only runs a subset of the suite.

The dedicated `coverage` job already does the meaningful work: it
downloads every shard's `.coverage` artifact, runs `coverage
combine` + `coverage report` + `coverage xml`, and uploads the
result to codecov. Passing `--cov-report=""` to pytest disables
the terminal report while leaving the `.coverage` data file
intact, so codecov reporting is unaffected and the failure
summary is much easier to find in the CI log.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…date-api-issue

fix: return certificate_available_date in courses list API response
…iewStarted filter (#38106)

Co-authored-by: Kira Miller <31229189+kiram15@users.noreply.github.com>
* feat: convert get_enterprise_customer into a pluggable override

* chore: ruff fix for UP045

---------

Co-authored-by: Troy Sankey <tsankey@2u.com>
This is intended to help operators respond to situations where a failing
heartbeat check due to an unhealthy backend service causes the entire edxapp
cluster to be ejected from the load balancer.

Also remove a debugging print line from a unit test.

Cherry picked from commits 3956db3
and 4fc67f6 (2U fork).
Adds a library branch to export_handler so that GET /export/<library_key>
generates and streams the OLX .tar.gz directly to the browser. Unlike the
async Celery flow used for courses, libraries are small enough to export
synchronously in a single request with no need to queue a background task,
poll for status, or store the output file.

This supports the Export button added in the Authoring MFE migration wizard.
See: openedx/frontend-app-authoring#2911

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: return relative path from get_proctored_exam_settings_url to prevent double /authoring prefix in MFE sidebar
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.