From 46ea862f04d8f1c0c3935caa782344e9a9309dfc Mon Sep 17 00:00:00 2001 From: Peter Fogg Date: Fri, 26 Jun 2015 13:48:24 -0400 Subject: [PATCH 1/2] Fix not being able to set course passing grades above 80%. --- cms/static/js/models/settings/course_grading_policy.js | 2 +- cms/templates/settings_graders.html | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cms/static/js/models/settings/course_grading_policy.js b/cms/static/js/models/settings/course_grading_policy.js index 258996c107..3751d91e7e 100644 --- a/cms/static/js/models/settings/course_grading_policy.js +++ b/cms/static/js/models/settings/course_grading_policy.js @@ -76,7 +76,7 @@ var CourseGradingPolicy = Backbone.Model.extend({ } } } - if(_.has(attrs, 'minimum_grade_credit')) { + if(this.get('is_credit_course') && _.has(attrs, 'minimum_grade_credit')) { var minimum_grade_cutoff = _.values(attrs.grade_cutoffs).pop(); if(isNaN(attrs.minimum_grade_credit) || attrs.minimum_grade_credit === null || attrs.minimum_grade_credit < minimum_grade_cutoff) { return { diff --git a/cms/templates/settings_graders.html b/cms/templates/settings_graders.html index dd2281c791..13871988e1 100644 --- a/cms/templates/settings_graders.html +++ b/cms/templates/settings_graders.html @@ -5,6 +5,7 @@ <%namespace name='static' file='static_content.html'/> <%! + import json from contentstore import utils from django.utils.translation import ugettext as _ %> @@ -22,7 +23,7 @@ <%block name="requirejs"> require(["js/factories/settings_graders"], function(SettingsGradersFactory) { - SettingsGradersFactory(${course_details|n}, "${grading_url}"); + SettingsGradersFactory(_.extend(${course_details|n}, {is_credit_course: ${json.dumps(is_credit_course)}}), "${grading_url}"); }); From 890cd6a47028a7e266d5739e13bb451cea55ebca Mon Sep 17 00:00:00 2001 From: Peter Fogg Date: Tue, 30 Jun 2015 13:18:18 -0400 Subject: [PATCH 2/2] Add grading spec tests. --- .../coffee/spec/models/settings_grading_spec.coffee | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cms/static/coffee/spec/models/settings_grading_spec.coffee b/cms/static/coffee/spec/models/settings_grading_spec.coffee index 35befb5f8c..4092f4f161 100644 --- a/cms/static/coffee/spec/models/settings_grading_spec.coffee +++ b/cms/static/coffee/spec/models/settings_grading_spec.coffee @@ -1,4 +1,4 @@ -define ["js/models/settings/course_grading_policy"], (CourseGradingPolicy) -> +define ["underscore", "js/models/settings/course_grading_policy"], (_, CourseGradingPolicy) -> describe "CourseGradingPolicy", -> beforeEach -> @model = new CourseGradingPolicy() @@ -23,3 +23,14 @@ define ["js/models/settings/course_grading_policy"], (CourseGradingPolicy) -> expect(@model.parseGracePeriod("asdf")).toBe(null) expect(@model.parseGracePeriod("7:19")).toBe(null) expect(@model.parseGracePeriod("1000:00")).toBe(null) + + describe "validate", -> + it "enforces that the passing grade is <= the minimum grade to receive credit if credit is enabled", -> + @model.set({minimum_grade_credit: 0.8, grace_period: '01:00', is_credit_course: true}) + @model.set('grade_cutoffs', [0.9], validate: true) + expect(_.keys(@model.validationError)).toContain('minimum_grade_credit') + + it "does not enforce the passing grade limit in non-credit courses", -> + @model.set({minimum_grade_credit: 0.8, grace_period: '01:00', is_credit_course: false}) + @model.set({grade_cutoffs: [0.9]}, validate: true) + expect(@model.validationError).toBe(null)