Enforce export compliance verification on course/program enrollment - #3786
Open
annagav wants to merge 7 commits into
Open
Enforce export compliance verification on course/program enrollment#3786annagav wants to merge 7 commits into
annagav wants to merge 7 commits into
Conversation
rhysyngsun
force-pushed
the
ag/export-compliance-enrollment
branch
from
July 29, 2026 16:50
d4b62f3 to
3f99def
Compare
OpenAPI ChangesShow/hide changesUnexpected changes? Ensure your branch is up-to-date with |
rhysyngsun
force-pushed
the
ag/export-compliance-enrollment
branch
from
August 4, 2026 21:00
3f99def to
1681ec8
Compare
rhysyngsun
force-pushed
the
ag/export-compliance-enrollment
branch
from
August 6, 2026 20:41
1681ec8 to
7127b7e
Compare
annagav
force-pushed
the
ag/export-compliance-enrollment
branch
2 times, most recently
from
August 7, 2026 11:40
860d7c6 to
50d381c
Compare
annagav
force-pushed
the
ag/export-compliance-enrollment
branch
2 times, most recently
from
August 10, 2026 19:51
38210bc to
7ee0b27
Compare
Wires the compliance app's CyberSource export check into create_run_enrollments/create_program_enrollments behind the EXPORT_COMPLIANCE_CHECK_ENABLED feature flag, and surfaces ExportComplianceCheckError as a user-facing validation error from the v1-v3 enrollment serializers/views.
for more information, see https://pre-commit.ci
verify_user_with_exports now takes (user, courseware_object). Pass the representative course run for run enrollments, and check each program individually for program enrollments (Program is now the accepted courseware object type, and a batch may contain multiple programs).
ExportComplianceResult.accepted now checks against
ExportComplianceLog.ACCEPTED_DECISIONS ({COMPLETED, MANUALLY_APPROVED}),
so tests asserting an accepted outcome need decision="COMPLETED" rather
than the no-longer-recognized "ACCEPT".
annagav
force-pushed
the
ag/export-compliance-enrollment
branch
from
August 11, 2026 16:04
7ee0b27 to
6b5b2bf
Compare
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.
What are the relevant tickets?
Related to #3706
Description (What does it do?)
behind the EXPORT_COMPLIANCE_CHECK_ENABLED feature flag (main/features.py)
serializers
_verify_exports_compliance_for_enrollmentto pass a courseware object (aCourseRunfor run enrollments, aProgramfor each program enrollment) through toverify_user_with_exports, matching that function's(user, courseware_object)signature from Add CyberSource export compliance data model #3793Stacked on nl/export-compliance-cache (#3793), which adds the
ExportComplianceLogcaching model this PR's compliance checks read/write through, and which is itself stacked on ag/export-compliance-app (#3785). This PR only contains the enrollment integration; diff against the base branch reflects just that.Test plan