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
a10bcb31
Commit
a10bcb31
authored
Dec 19, 2017
by
Sofiya Semenova
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
?
parent
f76d9925
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
14 additions
and
13 deletions
+14
-13
lms/djangoapps/grades/course_grade.py
+4
-3
lms/djangoapps/grades/course_grade_factory.py
+4
-4
lms/djangoapps/grades/subsection_grade.py
+4
-4
lms/djangoapps/grades/subsection_grade_factory.py
+2
-2
No files found.
lms/djangoapps/grades/course_grade.py
View file @
a10bcb31
...
...
@@ -213,8 +213,9 @@ class CourseGradeBase(object):
"""
Returns a list of subsection grades for the given chapter.
"""
enrollment_track_changed
=
False
if
self
.
enrollment_track_changed
is
None
else
self
.
enrollment_track_changed
return
[
self
.
_get_subsection_grade
(
course_structure
[
subsection_key
])
self
.
_get_subsection_grade
(
course_structure
[
subsection_key
]
,
enrollment_track_changed
)
for
subsection_key
in
_uniqueify_and_keep_order
(
course_structure
.
get_children
(
chapter_key
))
]
...
...
@@ -276,9 +277,9 @@ class CourseGrade(CourseGradeBase):
return
True
return
False
def
_get_subsection_grade
(
self
,
subsection
):
def
_get_subsection_grade
(
self
,
subsection
,
enrollment_track_changed
):
if
self
.
force_update_subsections
:
return
self
.
_subsection_grade_factory
.
update
(
subsection
,
self
.
persist_after_track_change
)
return
self
.
_subsection_grade_factory
.
update
(
subsection
,
enrollment_track_changed
)
else
:
# Pass read_only here so the subsection grades can be persisted in bulk at the end.
return
self
.
_subsection_grade_factory
.
create
(
subsection
,
read_only
=
True
)
...
...
lms/djangoapps/grades/course_grade_factory.py
View file @
a10bcb31
...
...
@@ -76,7 +76,7 @@ class CourseGradeFactory(object):
user
,
course_data
,
force_update_subsections
=
force_update_subsections
,
persist_after_track_change
=
enrollment_track_changed
enrollment_track_changed
=
enrollment_track_changed
)
def
iter
(
...
...
@@ -163,7 +163,7 @@ class CourseGradeFactory(object):
)
@staticmethod
def
_update
(
user
,
course_data
,
force_update_subsections
=
False
,
persist_after_track_change
=
False
):
def
_update
(
user
,
course_data
,
force_update_subsections
=
False
,
enrollment_track_changed
=
False
):
"""
Computes, saves, and returns a CourseGrade object for the
given user and course.
...
...
@@ -179,11 +179,11 @@ class CourseGradeFactory(object):
user
,
course_data
,
force_update_subsections
=
force_update_subsections
,
persist_after_track_change
=
persist_after_track_change
enrollment_track_changed
=
enrollment_track_changed
)
course_grade
=
course_grade
.
update
()
should_persist
=
should_persist
and
(
course_grade
.
attempted
or
persist_after_track_change
)
should_persist
=
should_persist
and
course_grade
.
attempted
if
should_persist
:
course_grade
.
_subsection_grade_factory
.
bulk_create_unsaved
()
PersistentCourseGrade
.
update_or_create
(
...
...
lms/djangoapps/grades/subsection_grade.py
View file @
a10bcb31
...
...
@@ -230,11 +230,11 @@ class CreateSubsectionGrade(NonZeroSubsectionGrade):
super
(
CreateSubsectionGrade
,
self
)
.
__init__
(
subsection
,
all_total
,
graded_total
)
def
update_or_create_model
(
self
,
student
,
score_deleted
=
False
,
persist_after_track_change
=
False
):
def
update_or_create_model
(
self
,
student
,
score_deleted
=
False
,
enrollment_track_changed
=
False
):
"""
Saves or updates the subsection grade in a persisted model.
"""
if
self
.
_should_persist_per_attempted
(
score_deleted
,
persist_after_track_change
=
False
):
if
self
.
_should_persist_per_attempted
(
score_deleted
,
enrollment_track_changed
):
return
PersistentSubsectionGrade
.
update_or_create_grade
(
**
self
.
_persisted_model_params
(
student
))
@classmethod
...
...
@@ -250,7 +250,7 @@ class CreateSubsectionGrade(NonZeroSubsectionGrade):
]
return
PersistentSubsectionGrade
.
bulk_create_grades
(
params
,
student
.
id
,
course_key
)
def
_should_persist_per_attempted
(
self
,
score_deleted
=
False
,
persist_after_track_change
=
False
):
def
_should_persist_per_attempted
(
self
,
score_deleted
=
False
,
enrollment_track_changed
=
False
):
"""
Returns whether the SubsectionGrade's model should be
persisted based on settings and attempted status.
...
...
@@ -263,7 +263,7 @@ class CreateSubsectionGrade(NonZeroSubsectionGrade):
return
(
self
.
all_total
.
first_attempted
is
not
None
or
score_deleted
or
persist_after_track_change
enrollment_track_changed
)
def
_persisted_model_params
(
self
,
student
):
...
...
lms/djangoapps/grades/subsection_grade_factory.py
View file @
a10bcb31
...
...
@@ -63,7 +63,7 @@ class SubsectionGradeFactory(object):
)
self
.
_unsaved_subsection_grades
.
clear
()
def
update
(
self
,
subsection
,
only_if_higher
=
None
,
score_deleted
=
False
,
persist_after_track_change
=
False
):
def
update
(
self
,
subsection
,
only_if_higher
=
None
,
score_deleted
=
False
,
enrollment_track_changed
=
False
):
"""
Updates the SubsectionGrade object for the student and subsection.
"""
...
...
@@ -92,7 +92,7 @@ class SubsectionGradeFactory(object):
grade_model
=
calculated_grade
.
update_or_create_model
(
self
.
student
,
score_deleted
,
persist_after_track_change
)
enrollment_track_changed
)
self
.
_update_saved_subsection_grade
(
subsection
.
location
,
grade_model
)
return
calculated_grade
...
...
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