Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
fd5eef38
Commit
fd5eef38
authored
May 11, 2017
by
sanfordstudent
Committed by
GitHub
May 11, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #15026 from edx/neem/TNL-6637
treat empty string as None for letter grades
parents
0e3e90f8
42fe9bd9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
3 deletions
+38
-3
lms/djangoapps/grades/new/course_grade.py
+3
-1
lms/djangoapps/instructor_task/tests/test_tasks_helper.py
+35
-2
No files found.
lms/djangoapps/grades/new/course_grade.py
View file @
fd5eef38
...
...
@@ -20,9 +20,11 @@ class CourseGradeBase(object):
self
.
course_data
=
course_data
self
.
percent
=
percent
self
.
letter_grade
=
letter_grade
self
.
passed
=
passed
# Convert empty strings to None when reading from the table
self
.
letter_grade
=
letter_grade
or
None
def
__unicode__
(
self
):
return
u'Course Grade: percent: {}, letter_grade: {}, passed: {}'
.
format
(
unicode
(
self
.
percent
),
...
...
lms/djangoapps/instructor_task/tests/test_tasks_helper.py
View file @
fd5eef38
...
...
@@ -30,6 +30,8 @@ from certificates.tests.factories import GeneratedCertificateFactory, Certificat
from
course_modes.models
import
CourseMode
from
courseware.tests.factories
import
InstructorFactory
from
instructor_analytics.basic
import
UNAVAILABLE
from
lms.djangoapps.grades.models
import
PersistentCourseGrade
from
lms.djangoapps.grades.transformer
import
GradesTransformer
from
lms.djangoapps.teams.tests.factories
import
CourseTeamFactory
,
CourseTeamMembershipFactory
from
lms.djangoapps.verify_student.tests.factories
import
SoftwareSecurePhotoVerificationFactory
from
openedx.core.djangoapps.course_groups.models
import
CourseUserGroupPartitionGroup
,
CohortMembership
...
...
@@ -86,13 +88,13 @@ from lms.djangoapps.instructor_task.tests.test_base import (
class
InstructorGradeReportTestCase
(
TestReportMixin
,
InstructorTaskCourseTestCase
):
""" Base class for grade report tests. """
def
_verify_cell_data_for_user
(
self
,
username
,
course_id
,
column_header
,
expected_cell_content
):
def
_verify_cell_data_for_user
(
self
,
username
,
course_id
,
column_header
,
expected_cell_content
,
num_rows
=
2
):
"""
Verify cell data in the grades CSV for a particular user.
"""
with
patch
(
'lms.djangoapps.instructor_task.tasks_helper.runner._get_current_task'
):
result
=
CourseGradeReport
.
generate
(
None
,
None
,
course_id
,
None
,
'graded'
)
self
.
assertDictContainsSubset
({
'attempted'
:
2
,
'succeeded'
:
2
,
'failed'
:
0
},
result
)
self
.
assertDictContainsSubset
({
'attempted'
:
num_rows
,
'succeeded'
:
num_rows
,
'failed'
:
0
},
result
)
report_store
=
ReportStore
.
from_config
(
config_name
=
'GRADES_DOWNLOAD'
)
report_csv_filename
=
report_store
.
links_for
(
course_id
)[
0
][
0
]
report_path
=
report_store
.
path_to
(
course_id
,
report_csv_filename
)
...
...
@@ -327,6 +329,37 @@ class TestInstructorGradeReport(InstructorGradeReportTestCase):
result
=
CourseGradeReport
.
generate
(
None
,
None
,
self
.
course
.
id
,
None
,
'graded'
)
self
.
assertDictContainsSubset
({
'attempted'
:
1
,
'succeeded'
:
1
,
'failed'
:
0
},
result
)
def
test_certificate_eligibility
(
self
):
"""
Verifies that whether a learner has a failing grade in the database or the grade is
calculated on the fly, a failing grade will result in a Certificate Eligibility of
"N" in the report.
Also confirms that a persisted passing grade will result in a Certificate Eligibility
of "Y."
"""
course
=
CourseFactory
.
create
()
user
=
CourseEnrollment
.
enroll
(
UserFactory
.
create
(),
course
.
id
)
self
.
_verify_cell_data_for_user
(
user
.
username
,
course
.
id
,
'Certificate Eligible'
,
'N'
,
num_rows
=
1
)
grading_policy_hash
=
GradesTransformer
.
grading_policy_hash
(
course
)
PersistentCourseGrade
.
update_or_create
(
user_id
=
user
.
user_id
,
course_id
=
course
.
id
,
passed
=
False
,
percent_grade
=
0.0
,
grading_policy_hash
=
grading_policy_hash
,
)
self
.
_verify_cell_data_for_user
(
user
.
username
,
course
.
id
,
'Certificate Eligible'
,
'N'
,
num_rows
=
1
)
PersistentCourseGrade
.
update_or_create
(
user_id
=
user
.
user_id
,
course_id
=
course
.
id
,
passed
=
True
,
percent_grade
=
0.8
,
letter_grade
=
"pass"
,
grading_policy_hash
=
grading_policy_hash
,
)
self
.
_verify_cell_data_for_user
(
user
.
username
,
course
.
id
,
'Certificate Eligible'
,
'Y'
,
num_rows
=
1
)
@ddt.data
(
(
ModuleStoreEnum
.
Type
.
mongo
,
4
),
(
ModuleStoreEnum
.
Type
.
split
,
3
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment