254 Commits

Author SHA1 Message Date
Muhammad Anas
1599b80a74 fix: respect masqueraded learner permissions when computing subsection show_grades in Progress Tab API (#38025)
This PR fixes grade-visibility behavior in the Progress Tab API when staff
users are masquerading as learners.

Previously, subsection show_grades was computed using the real requester’s
staff access, which could expose grades that the masqueraded learner should not
see.

Now, show_grades respects the masqueraded user’s permissions so the API
response matches the learner view.

Co-authored-by: Peter Pinch <pdpinch@mit.edu>
2026-03-05 12:00:07 -05:00
Muhammad Anas
b968eed88b feat: add optional API for hiding the dates tab (#37923) 2026-02-25 16:27:49 -08:00
asajjad2
616c966de7 fix: calculate last_grade_publish_date for all unreleased subsections
fix: don't update business logic

fix: comparison condition

fix: linting errors

fix: linting error

test: progress api test

test: add not-null scenario

fix: linting errors

test: fix assertion

refactor: tests
2026-02-24 18:52:14 +05:00
Irtaza Akram
33cc1a94ba chore: upstream ProblemBlock exceptions and shared utilities to XBlock (#37806)
* fix: add support for xblock 5.3.0
2026-01-07 13:30:53 +05:00
Usama Sadiq
e1747f3844 build: add support for Python 3.12 (#37160)
* build: add support for Python 3.12
2025-12-15 12:12:29 +05:00
Serhiii Nanai
0c3d709d63 feat: add assignment color codes to Progress API (#37438)
* feat: change list of color codes

* fix: add missing color

* style: rename attribute for assignment color list

* docs: add explanation for current implementation
2025-12-02 13:52:36 -05:00
Muhammad Anas
4afff6ef5c feat: shift progress calculation to backend, add never_but_include_grade (#37399)
This commit migrates the data calculation logic for the GradeSummary
table, which was previously in the frontend-app-learning.

This commit also introduces a new visibility option for assignment
scores: “Never show individual assessment results, but show overall
assessment results after the due date.”

With this option, learners cannot see question-level correctness or
scores at any time. However, once the due date has passed, they can
view their overall score in the total grades section on the Progress
page.

These two changes are coupled with each other because it compromises
the integrity of this data to do the score hiding logic on the front
end.

The corresponding frontend PR is: openedx/frontend-app-learning#1797
2025-10-22 10:15:42 -04:00
Agrendalath
bbc0cc2baa fix: show correct icons in the sidebar for units with custom XBlocks
Currently, the sidebar relies only on the XBlock's `category` class attribute
(called `type` in the transformers). This behavior is inconsistent with the
legacy subsection navigation, which relies on the `XModuleMixin.get_icon_class`
method. This commit adds the `icon_class` to the fields collected by the
transformers and uses it to determine whether the "problem" or "video" icon
should be displayed for a unit in the sidebar.
2025-08-21 00:29:01 +05:30
Agrendalath
64190d1e13 fix: sidebar completion for completable XBlocks with children
It is possible to create a completable XBlock with children.
An example is the Library Content Block with the
`MARK_LIBRARY_CONTENT_BLOCK_COMPLETE_ON_VIEW` feature toggle.
The sidebar should use the same mechanism as the `BlockCompletionTransformer`
and the `edx-completion` library. It means that we should treat:
1. An aggregator XBlock as completed only when all its children are completed.
2. A completable XBlock as completed when it is directly marked as completed
   (without checking the completion of its children).
2025-08-20 17:52:35 +05:30
Justin Hynes
f509bceac2 fix: setup context for emitting event to segment if desired (#36692)
If we wish this event to be sent to Segment through the event-tracking lib, we must ensure that the context includes at least the `user_id` field in the context dict.
2025-05-09 10:54:37 -04:00
Justin Hynes
46c9b3a193 fix: add error handling for potential issues calculating course progress (#36660)
* fix: add error handling for potential issues calculating course progress

Realized there is potential in a few places for exceptions to be thrown. I'm adding some more error handling in the course progress task and function to handle potential issues.
2025-05-05 14:00:12 -04:00
Justin Hynes
919615635e feat: optionally emit course completion analytics when a learner enters the courseware (#36507)
This PR attempts to improve the ability to collect analytics about learner's progress
in their courses. Currently, the only place we regularly calculate course progress is
when a learner visits the "Progress" tab in the courseware.

Now, _optionally_, when a learner visits the home page of their course, we will enqueue
a Celery task that will calculate their progress and emit a tracking event.

This event is gated by use of the COURSE_HOME_SEND_COURSE_PROGRESS_ANALYTICS_FOR_STUDENT
waffle flag.
2025-04-29 13:46:09 -04:00
Edward Zarecor
49a69f5042 feat: allow return dates for not started courses for mobile, PR #36297
feat: allow return dates for not started courses for mobile
2025-04-22 13:28:38 -04:00
Kyrylo Kholodenko
b2c57adf12 feat: allow return dates for not started courses for mobile 2025-04-18 14:08:35 +03:00
Feanil Patel
1829eb7d71 feat!: Remove the course sock and related APIs.
DEPR: https://github.com/openedx/edx-platform/issues/36429

This change removes the course_sock and related API data.  The UI it
removes is on the Legacy Courseware pages which have also been replaced
and have their own [deprecation ticket](https://github.com/openedx/edx-platform/issues/35803)

Before this can be merged, we will need to update the
frontend-app-learning MFE to no longer consume the
`can_show_upgrade_sock` attribute.

BREAKING CHANGE: CourseHomeMetadata, ProgressTab, OutlineTab and
VerifiedMode APIs will no longer have a `can_show_upgrade_sock`
attribute.
2025-04-07 10:29:39 -04:00
Agrendalath
8b7a771dc4 fix: remove incorrect key type when filtering inaccessible blocks
Returning the list with a 'completion' string was added in 9bc0f85. However,
the `get_accessible_sequences` method expects a list of dicts with an 'id' key.
2025-01-23 17:53:36 +05:30
0x29a
69216e5560 test: has_course_author_access correctness 2024-11-29 00:39:58 +05:30
0x29a
dd814c3910 docs: explain why specifying 'cms' service 2024-11-29 00:39:58 +05:30
0x29a
ac9861fd73 feat: add has_course_author_access to CourseHomeMetadataView response 2024-11-29 00:39:58 +05:30
Brian Mesick
e478975105 chore: Add missing PII annotations, update safelist
PII Annotations are very out of date, this commit adds most that were
missing in edx-platform, and some additional annotations to the
safelist. It is not comprehensive, several other upstream Open edX
packages also need to be updated. It also does not include removing
annotations that have been moved upstream, or been removed entirely.
Those are separate follow-on tasks.
2024-11-05 12:58:36 -05:00
Kristin Aoki
92c8949af5 feat: add studio_access attribute to metadata (#35444)
* feat: add studio_access attribute to metadata

* fix: styling errors

* fix: remove redunant return
2024-09-06 19:16:44 +00:00
Juliana Kang
40ddfeb3b8 feat: Add override on percentage config to the First Purchase Discount (#35167)
REV-4098
2024-07-23 15:43:34 -04:00
Juliana Kang
a19697786f feat: Add First Purchase Discount override (#35143)
REV-4098
2024-07-22 14:01:07 -04:00
Emad Rad
c27d55a253 chore: typos fixed 2024-05-25 18:05:28 +03:30
Ivan Niedielnitsev
699614d892 feat: include units when calculating completion percentage (#34816)
This is an enhancement to the API used for the courseware navigation
sidebar.
2024-05-24 12:59:09 -04:00
Kyle McCormick
11626148d9 refactor: switch from mock to unittest.mock (#34844)
As of Python 3.3, the 3rd-party `mock` package has been subsumed into the
standard `unittest.mock` package. Refactoring tests to use the latter will
allow us to drop `mock` as a dependency, which is currently coming in
transitively through requirements/edx/paver.in.

We don't actually drop the `mock` dependency in this PR. That will happen
naturally in:

* https://github.com/openedx/edx-platform/pull/34830
2024-05-22 13:52:24 -04:00
Saad Yousaf
45cd459dde feat: add flag for showing/hiding new discussion sidebar view on course home page. (#34561)
Co-authored-by: Saad Yousaf <saad.yousaf@A006-01048.local>
2024-04-29 12:57:49 +05:00
Ivan Niedielnitsev
30836729b7 feat: Implement Sidebar Navigation [FC-0056] (#34457)
This commit addresses to the need to add an API for Sidebar Navigation
that returns the course structure with sections, subsections, and
**units**, according to user access rules. (Previous outline requests
only went down to subsections.)

To improve the performance of the API, we cache the course structure
for a user, which makes it much easier to calculate the block structure
for the user at each request. However, there may be cases when this
caching can lead to an overflow of the cache storage in high-loaded LMS
with large courses, so the corresponding flag
"courseware.disable_navigation_sidebar_blocks_caching" was added so
that this caching can be disabled.
2024-04-26 12:04:42 -04:00
Feanil Patel
ea55eca47e Merge pull request #33690 from Inferato/lytvynenko/bulk_email_checkbox_master
fix: course mode added to the metadata
2024-02-29 15:19:13 -05:00
Bryann Valderrama
4c0fba2063 feat: expose hide_from_toc field for course blocks in outline API (#33955)
These changes are part of the effort made to implement https://openedx.atlassian.net/wiki/spaces/OEPM/pages/3853975595/Feature+Enhancement+Proposal+Hide+Sections+from+course+outline
2024-02-15 10:44:28 -04:00
salmannawaz
57b480b04f Update all edx-platform REST endpoints to support JWT Auth (#34152)
* chore: update API endpoints to support default JWT auth

The default DRF Auth classes were recently updated to allow for both JWT and Session auth by default. Any endpoint that overrides the AUTHENTICATION_CLASSES but has just session, just JWT or just both of those should be updated to remove the override.

Details in https://github.com/openedx/edx-platform/issues/33662
2024-02-13 10:46:58 -05:00
Syed Sajjad Hussain Shah
cb2a34e51f feat: logout other sessions on email change (#33846)
* feat: logout other sessions on email change

* fix: updated the approach for session invalidation

* fix: update and add tests

* fix: update tests with descriptive comments

* feat: add integration tests

* fix: store email in session update

* fix: add setting for tests

* fix: fix tests

* feat: Upgrade Python dependency edx-drf-extensions (#34135)

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

Co-authored-by: syedsajjadkazmii <syedsajjadkazmii@users.noreply.github.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: syedsajjadkazmii <syedsajjadkazmii@users.noreply.github.com>
2024-01-29 14:43:51 +05:00
Taras Lytvynenko
834562e5f8 fix: course mode added to the metadata 2023-11-10 01:04:49 +02:00
Rafay Ghafoor
b14396bbfb feat: Adds disable_progress_graph attribute to the returned course_metadata response
Currently, https://github.com/openedx/frontend-app-course-authoring/issues/517 faces an issue when the
progress graph toggle is enabled/disabled but the settings are not respected, the disable_progress_graph
attribute will allow the frontend-app-learning repo to use this attribute to respect the settings authored
from frontend-app-course-authoring and ultimately fix https://github.com/openedx/frontend-app-course-authoring/issues/517.
2023-10-11 20:39:16 +05:30
ABBOUD Moncef
9b44065ab0 fix: hide sequences & sections when access is restricted in units through cohorts (#33191)
This does two major things:

* Removes subsections from a student's course outline if the
  subsection's units are all restricted to a cohort that the student
  is not a part of (see CohortPartitionGroupsOutlineProcessor).
* Removes sections from the course outline if the user is not allowed
  to see any of its child subsections.
2023-09-19 10:05:02 -04:00
Lakshya Khatri
3acb1d8590 docs: annotate lms progress tab ui waffle flag (#33233) 2023-09-18 10:06:12 -04:00
Jansen Kantor
88b6f3894e fix: turn off atomic requests for course api get views (#33230)
* fix: turn off atomic requests for course api get views

* test: fix test
2023-09-14 10:40:28 -04:00
Jansen Kantor
7b91f8579f fix: return a 403 instead of a redirect from course_home_api api methods (#32210)
* fix: return 403 on course access error rather than redirect
2023-05-24 16:09:34 +00:00
Muhammad Adeel Tajamul
d8db64cf2a feat: hide discussion tab when disabled (#32195) 2023-05-16 05:17:06 +05:00
Pooja Kulkarni
a0d23b20f5 refactor: rename descriptor -> block within lms/djangoapps/course_api
Co-authored-by: Agrendalath <piotr@surowiec.it>
2023-04-26 17:10:53 +02:00
Ned Batchelder
12765a7a59 refactor(test): use @skip_unless_lms uniformly 2023-02-01 13:52:26 -08:00
Arunmozhi
d417a7561f refactor: rename ItemFactory to BlockFactory 2023-01-23 14:47:47 +01:00
0x29a
0df1411636 refactor: xmodule/course_module.py -> xmodule/course_block.py 2022-12-19 17:48:49 +01:00
Bernard Szabo
377edc2f4d feat: TNL-10136 Propagate changes from last PR 2022-12-13 17:19:41 -05:00
Sagirov Evgeniy
42adcaaf4d FC-0001: Remove Persistent Course Grades Flags (#30978)
* feat: revert Fix certificate generation without persistent grades

* feat: Remove Persistent Course Grades Flags

* test: update tests
2022-09-14 14:00:01 -04:00
Hammad Ahmad Waqas
19c6bae60e Merge pull request #30920 from openedx/hammad/ENT-6111
feat: added support to check if active enterprise is same as EnterpriseCourseEnrollment object.
2022-09-07 11:55:56 +05:00
hammadahmadwaqas
02c799df61 feat: added support to check if active enterprise is same as EnterpriseCourseEnrollment object. 2022-09-07 11:24:33 +05:00
Mubbshar Anwar
22b378e605 feat: Pass segment properties (#30919)
- For new enrollment email pass extra segment event properties.
VAN-999
2022-09-05 16:55:46 +05:00
Mubbshar Anwar
2980265764 Revert "feat: Pass segment properties (#30742)" (#30918)
This reverts commit b76d5c2a66.
2022-08-30 12:11:25 +05:00
Mubbshar Anwar
b76d5c2a66 feat: Pass segment properties (#30742)
- For enrollment email pass extra segment event properties.
VAN-999
2022-08-29 15:36:24 +05:00