[Follow-up BE] Remove the ENABLE_COMPETENCY_MASTERY_TRACKING setting

Abierto
#924 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@alezconsultant ya está trabajando en esto.

Desde el 3/11/2026.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
72/100
Tipo de issue
Refactorización
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
django, python
Área
backend

Línea de trabajo

Start with lms/envs/common.py and _record_competency_status in lms/djangoapps/grades/subsection_grade.py, then review the listed tests in test_subsection_grade.py, test_api.py, and rest_api/v1/tests/test_gradebook_views.py. Remove the setting and its guard, clean up setting-off tests and override decorators, and run the grades test suite. Done when the acceptance criteria pass and the remaining grades tests pass.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

User Story

As a platform operator, I want a learner's competency criterion status recorded on every subsection grade write without a setting to switch on, in order to have mastery tracked as soon as criteria are attached to content, with no configuration step to miss.

Description

openedx/openedx-platform#39179 gated the competency status write on the subsection grade path behind the Django setting ENABLE_COMPETENCY_MASTERY_TRACKING, default False, but upon further inspection, this isn't necessary per the PR comment discussion. Essentially, with no competency criteria in a deployment, record_graded_object_statuses in openedx-core runs one indexed query that returns no rows and queues no roll-up task, so a deployment that does not use competencies pays one SELECT per subsection grade write and nothing else, so there is no reason to have an extra flag to prohibit this call for non-CBE instances.

Remove the setting and run the competency call unconditionally. The change is in openedx-platform.

Context

  • #701's acceptance scenario "An operator can decline competency tracking entirely" no longer holds once this ticket is done.

Acceptance Criteria

  • ENABLE_COMPETENCY_MASTERY_TRACKING and its toggle annotation block are gone from lms/envs/common.py.
  • _record_competency_status in lms/djangoapps/grades/subsection_grade.py calls record_graded_object_statuses without consulting any setting, and its docstring no longer describes a tracking-off case.
  • No test in lms/djangoapps/grades overrides the setting, the tests that asserted setting-off behavior are removed, and the rest of the grades test suite passes.
Technical Details

This is a suggested approach, not the source of truth. The User Story, Description, and Acceptance Criteria define what must be true when the work is done.

Approach

  1. Delete the ENABLE_COMPETENCY_MASTERY_TRACKING assignment and the .. toggle_name: annotation block above it from lms/envs/common.py.
  2. In lms/djangoapps/grades/subsection_grade.py, remove the if not settings.ENABLE_COMPETENCY_MASTERY_TRACKING: return [] guard at the top of _record_competency_status and update its docstring. Leave the transaction.atomic() blocks, the on_commit enqueue, and the event emission as they are; the setting never gated them.
  3. Remove test_setting_off_saves_grades_without_calling_core and test_setting_off_does_not_enqueue from lms/djangoapps/grades/tests/test_subsection_grade.py, and remove every @override_settings(ENABLE_COMPETENCY_MASTERY_TRACKING=True) decorator from test_subsection_grade.py, tests/test_api.py, and rest_api/v1/tests/test_gradebook_views.py. The tests under those decorators keep running, now against the unconditional path.

Files to create and modify

File Change
lms/envs/common.py modified: remove the setting and its annotation block
lms/djangoapps/grades/subsection_grade.py modified: drop the setting guard in _record_competency_status
lms/djangoapps/grades/tests/test_subsection_grade.py modified: remove the two setting-off tests and the override decorators
lms/djangoapps/grades/tests/test_api.py modified: remove the override decorator
lms/djangoapps/grades/rest_api/v1/tests/test_gradebook_views.py modified: remove the override decorator
Lenguaje dominante
Python
Estrellas
10
Forks
35
Merge medio
3 d 8 h
PR fusionados (30 d)
30

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de openedx/openedx-core

Todos los issues de openedx/openedx-core

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.