diff --git a/lms/djangoapps/grades/api.py b/lms/djangoapps/grades/api.py index 92ad492f56..3c2de86d1d 100644 --- a/lms/djangoapps/grades/api.py +++ b/lms/djangoapps/grades/api.py @@ -134,7 +134,7 @@ def undo_override_subsection_grade(user_id, course_key_or_id, usage_key_or_id, f def should_override_grade_on_rejected_exam(course_key_or_id): - """Convienence function to return the state of the CourseWaffleFlag REJECTED_EXAM_OVERRIDES_GRADE""" + """Convenience function to return the state of the CourseWaffleFlag REJECTED_EXAM_OVERRIDES_GRADE""" from .config.waffle import waffle_flags, REJECTED_EXAM_OVERRIDES_GRADE course_key = _get_key(course_key_or_id, CourseKey) return waffle_flags()[REJECTED_EXAM_OVERRIDES_GRADE].is_enabled(course_key) diff --git a/lms/djangoapps/grades/config/models.py b/lms/djangoapps/grades/config/models.py index 94b814c25f..6d3ce8f42c 100644 --- a/lms/djangoapps/grades/config/models.py +++ b/lms/djangoapps/grades/config/models.py @@ -24,6 +24,19 @@ class PersistentGradesEnabledFlag(ConfigurationModel): feature to take effect. .. no_pii: + + .. toggle_name: PersistentGradesEnabledFlag.enabled + .. toggle_implementation: ConfigurationModel + .. toggle_default: False + .. toggle_description: When enabled, grades are persisted. This means that PersistentCourseGrade objects are + created for student grades. In order for this to take effect, CoursePersistentGradesFlag objects must also be + created individually for each course. Alternatively, the PersistentGradesEnabledFlag.enabled_for_all_courses + waffle flag or the PERSISTENT_GRADES_ENABLED_FOR_ALL_TESTS feature flag can be set to True to enable this + feature for all courses. + .. toggle_use_cases: monitored_rollout + .. toggle_creation_date: 2016-08-26 + .. toggle_tickets: https://github.com/edx/edx-platform/pull/13329 + .. toggle_status: supported """ # this field overrides course-specific settings to enable the feature for all courses enabled_for_all_courses = BooleanField(default=False) diff --git a/lms/djangoapps/grades/config/waffle.py b/lms/djangoapps/grades/config/waffle.py index 9ed8ba7f1c..a62c21c1ab 100644 --- a/lms/djangoapps/grades/config/waffle.py +++ b/lms/djangoapps/grades/config/waffle.py @@ -10,13 +10,73 @@ from openedx.core.djangoapps.waffle_utils import CourseWaffleFlag, WaffleFlagNam WAFFLE_NAMESPACE = u'grades' # Switches + +# .. toggle_name: grades.assume_zero_grade_if_absent +# .. toggle_implementation: WaffleSwitch +# .. toggle_default: False +# .. toggle_description: When enabled, an absent grade is assumed to be zero. Alternatively, defining the +# `settings.FEATURES["ASSUME_ZERO_GRADE_IF_ABSENT_FOR_ALL_TESTS"]` feature flag in the LMS will enable this feature +# for all courses. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2017-04-11 +# .. toggle_tickets: https://github.com/edx/edx-platform/pull/14771 +# .. toggle_status: supported +# .. toggle_warnings: This requires the PersistentGradesEnabledFlag to be enabled. ASSUME_ZERO_GRADE_IF_ABSENT = u'assume_zero_grade_if_absent' +# .. toggle_name: grades.disable_regrade_on_policy_change +# .. toggle_implementation: WaffleSwitch +# .. toggle_default: False +# .. toggle_description: When enabled, a change in grading policy will not trigger re-grading. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2017-08-03 +# .. toggle_tickets: https://github.com/edx/edx-platform/pull/15733 +# .. toggle_status: supported DISABLE_REGRADE_ON_POLICY_CHANGE = u'disable_regrade_on_policy_change' # Course Flags + +# .. toggle_name: grades.rejected_exam_overrides_grade +# .. toggle_implementation: CourseWaffleFlag +# .. toggle_default: False +# .. toggle_description: When enabled, a rejected exam will trigger a grade override. Note that this flag is not used +# in edx-platform, but only in edx-proctoring. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2019-05-29 +# .. toggle_tickets: https://github.com/edx/edx-platform/pull/20719 +# .. toggle_status: supported REJECTED_EXAM_OVERRIDES_GRADE = u'rejected_exam_overrides_grade' +# .. toggle_name: grades.rejected_exam_overrides_grade +# .. toggle_implementation: CourseWaffleFlag +# .. toggle_default: False +# .. toggle_description: When enabled, grades can no longer be updated 30 days after a course has ended. Note that this +# is only valid for courses which actually have an end date. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2018-10-01 +# .. toggle_tickets: https://github.com/edx/edx-platform/pull/19026 +# .. toggle_status: supported ENFORCE_FREEZE_GRADE_AFTER_COURSE_END = u'enforce_freeze_grade_after_course_end' + +# .. toggle_name: grades.writable_gradebook +# .. toggle_implementation: CourseWaffleFlag +# .. toggle_default: False +# .. toggle_description: When enabled, add GET/POST endpoints for updating gradebook entries in bulk. Also, a link to +# the writable gradebook is added to the instructor dashboard. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2018-10-03 +# .. toggle_tickets: https://github.com/edx/edx-platform/pull/19054 +# .. toggle_warnings: Enabling this requires that the `WRITABLE_GRADEBOOK_URL` setting be properly defined. +# .. toggle_status: supported WRITABLE_GRADEBOOK = u'writable_gradebook' + +# .. toggle_name: grades.bulk_management +# .. toggle_implementation: CourseWaffleFlag +# .. toggle_default: False +# .. toggle_description: When enabled, bulk features are visible for management in masters course. As far +# as we understand, this feature is now unused and obsolete. +# .. toggle_use_cases: open_edx +# .. toggle_creation_date: 2019-08-20 +# .. toggle_tickets: https://github.com/edx/edx-platform/pull/21389 +# .. toggle_status: supported BULK_MANAGEMENT = u'bulk_management' diff --git a/lms/djangoapps/grades/services.py b/lms/djangoapps/grades/services.py index 0daac4d9d1..6d03e8b56d 100644 --- a/lms/djangoapps/grades/services.py +++ b/lms/djangoapps/grades/services.py @@ -61,5 +61,5 @@ class GradesService(object): return api.undo_override_subsection_grade(user_id, course_key_or_id, usage_key_or_id, feature=feature) def should_override_grade_on_rejected_exam(self, course_key_or_id): - """Convienence function to return the state of the CourseWaffleFlag REJECTED_EXAM_OVERRIDES_GRADE""" + """Convenience function to return the state of the CourseWaffleFlag REJECTED_EXAM_OVERRIDES_GRADE""" return api.should_override_grade_on_rejected_exam(course_key_or_id)