|
| 1 | +OL Open edX UAI Content Customization |
| 2 | +====================================== |
| 3 | + |
| 4 | +An Open edX CMS plugin that automates the generation of industry- and |
| 5 | +length-specific UAI course variants using direct Open edX modulestore APIs. |
| 6 | + |
| 7 | +Version Compatibility |
| 8 | +--------------------- |
| 9 | + |
| 10 | +Supports Open edX releases from **Sumac** and onwards. |
| 11 | + |
| 12 | +Installing The Plugin |
| 13 | +--------------------- |
| 14 | + |
| 15 | +For detailed installation instructions, please refer to the |
| 16 | +`plugin installation guide <../../docs#installation-guide>`_. |
| 17 | + |
| 18 | +Installation required in: |
| 19 | + |
| 20 | +* CMS |
| 21 | + |
| 22 | +Overview |
| 23 | +-------- |
| 24 | + |
| 25 | +Original UAI courses are transformed into multiple custom courses per industry |
| 26 | +and length combination: |
| 27 | + |
| 28 | ++--------------+------+-------------+--------+ |
| 29 | +| Industry | Code | Length code | Length | |
| 30 | ++==============+======+=============+========+ |
| 31 | +| Healthcare | HC | S | Short | |
| 32 | ++--------------+------+-------------+--------+ |
| 33 | +| Healthcare | HC | F | Full | |
| 34 | ++--------------+------+-------------+--------+ |
| 35 | +| Finance | F | S | Short | |
| 36 | ++--------------+------+-------------+--------+ |
| 37 | +| Finance | F | F | Full | |
| 38 | ++--------------+------+-------------+--------+ |
| 39 | +| Energy | E | S | Short | |
| 40 | ++--------------+------+-------------+--------+ |
| 41 | +| Energy | E | F | Full | |
| 42 | ++--------------+------+-------------+--------+ |
| 43 | +| Original | — | S | Short | |
| 44 | ++--------------+------+-------------+--------+ |
| 45 | +| Original | — | F | Full | |
| 46 | ++--------------+------+-------------+--------+ |
| 47 | + |
| 48 | +Course Key Format |
| 49 | +~~~~~~~~~~~~~~~~~ |
| 50 | + |
| 51 | +.. code-block:: text |
| 52 | +
|
| 53 | + course-v1:ORG+NUMBER.<DURATION>[.<INDUSTRY>]+RUN |
| 54 | +
|
| 55 | +For the **Original** industry, no industry code is appended: |
| 56 | + |
| 57 | +.. code-block:: text |
| 58 | +
|
| 59 | + course-v1:UAI_SOURCE+UAI.3.S+1T2026 ← Original, Short |
| 60 | + course-v1:UAI_SOURCE+UAI.3.F+1T2026 ← Original, Full |
| 61 | + course-v1:UAI_SOURCE+UAI.3.S.HC+1T2026 ← Healthcare, Short |
| 62 | +
|
| 63 | +Course Structure |
| 64 | +~~~~~~~~~~~~~~~~ |
| 65 | + |
| 66 | +Each generated course has the following structure:: |
| 67 | + |
| 68 | + Course (<display name>) |
| 69 | + └── Lectures (section) |
| 70 | + └── <Video Title> (subsection) |
| 71 | + └── <Video Title> (unit) |
| 72 | + └── <Video Title> (video block with edX video ID) |
| 73 | + |
| 74 | +Usage |
| 75 | +----- |
| 76 | + |
| 77 | +Prerequisites |
| 78 | +~~~~~~~~~~~~~ |
| 79 | + |
| 80 | +You will need two CSV files: |
| 81 | + |
| 82 | +1. **Customized video metadata CSV** — produced by the video customization |
| 83 | + workflow. Required columns: |
| 84 | + |
| 85 | + - ``Course Key`` — the original Open edX course key (e.g. |
| 86 | + ``course-v1:UAI_SOURCE+UAI.2+1T2026``) |
| 87 | + - ``Industry`` — one of: ``Healthcare``, ``Finance``, ``Energy``, |
| 88 | + ``Original industry`` |
| 89 | + - ``Duration (Minutes)`` — a numeric value (≤30 = Short) or the literal |
| 90 | + ``long`` (= Full) |
| 91 | + - ``Video File Name`` — file name matching the Name column in the assets CSV |
| 92 | + - ``Video Title (Lecture Title)`` — display name for the subsection/unit/video |
| 93 | + - ``Module Name`` — used to build the course display name |
| 94 | + |
| 95 | +2. **Open edX video asset CSV** — exported from Studio / OVS after uploading |
| 96 | + the customized videos. Required columns: |
| 97 | + |
| 98 | + - ``Name`` — video file name (matches ``Video File Name`` above) |
| 99 | + - ``Video ID`` — the Open edX UUID for the video |
| 100 | + |
| 101 | +Running the Command |
| 102 | +~~~~~~~~~~~~~~~~~~~ |
| 103 | + |
| 104 | +Run the management command from inside the CMS container (e.g. Tutor dev |
| 105 | +shell): |
| 106 | + |
| 107 | +.. code-block:: bash |
| 108 | +
|
| 109 | + python manage.py generate_uai_courses \ |
| 110 | + --customized-csv /path/to/customized.csv \ |
| 111 | + --video-assets-csv /path/to/video_assets.csv \ |
| 112 | + [--username studio_worker] \ |
| 113 | + [--dry-run] |
| 114 | +
|
| 115 | +Options |
| 116 | +~~~~~~~ |
| 117 | + |
| 118 | +``--customized-csv`` |
| 119 | + Path to the customized video metadata CSV file. **Required.** |
| 120 | + |
| 121 | +``--video-assets-csv`` |
| 122 | + Path to the Open edX video asset CSV file. **Required.** |
| 123 | + |
| 124 | +``--username`` |
| 125 | + Username of the platform user under whose authority the courses are |
| 126 | + created. Defaults to ``studio_worker``. |
| 127 | + |
| 128 | +``--dry-run`` |
| 129 | + Print what would be created without writing anything to the modulestore. |
| 130 | + Use this to verify CSV mapping before committing. |
| 131 | + |
| 132 | +Development |
| 133 | +----------- |
| 134 | + |
| 135 | +.. code-block:: bash |
| 136 | +
|
| 137 | + # Install dependencies |
| 138 | + uv sync --dev |
| 139 | +
|
| 140 | + # Run tests (requires Open edX environment — see AGENTS.md) |
| 141 | + ./run_edx_integration_tests.sh --plugin ol_openedx_uai_content_customization --skip-build |
0 commit comments