Skip to content

Commit d40dc78

Browse files
committed
Addresses Pylint failure "Instance of 'list' has no 'order_by' member (no-member)"
See: pylint-dev/pylint-django#165 Also updated documentation for enrollment metrics
1 parent df554ca commit d40dc78

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

figures/pipeline/enrollment_metrics.py

+20-12
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,24 @@
1313
# Logic
1414
1515
```
16-
for each learner+course
16+
17+
for each learner+course # See bulk_calculate_course_progress_data
1718
get newest lgcm record
1819
get newest sm record
1920
21+
# Check if update needed, see _enrollment_metrics_needs_update
2022
if not lcgm and not sm
2123
# Learner has not started course
2224
skip collection for this learner+course
2325
else if lcgm and sm
2426
# we have saved history so we can check to update
25-
if lcgm.modified is older than sm.modified:
26-
collect new course data
27+
if lcgm.modified is older than sm.modified
28+
collect new course data # See _collect_progress_data
2729
return new metrics object created
2830
2931
else if not lcgm and sm
3032
# Learner started course after last collection action
31-
collect new course data
33+
collect new course data # See _collect_progress_data
3234
return new metrics object created
3335
3436
else # lcgm and not sm
@@ -39,10 +41,9 @@
3941
return None
4042
```
4143
42-
# NOTE: Change 'lcgm' in this file to either 'enrollment' or 'lp' when an
43-
abbreviation is acceptible. This is to get this module forward ready for
44-
reworking `LearnerCourseGradeMetrics`
45-
44+
# NOTE: We plan to change 'lcgm' in this file to either 'enrollment' or 'LP'
45+
(for Learner Progress) when an abbreviation is acceptible. This is to get
46+
this module forward ready for reworking `LearnerCourseGradeMetrics`
4647
"""
4748

4849
from datetime import datetime
@@ -148,12 +149,19 @@ def collect_metrics_for_enrollment(course_enrollment, date_for=None, **_kwargs):
148149
raise UnlinkedCourseError('No site found for course "{}"'.format(
149150
course_enrollment.course_id))
150151

151-
most_recent_sm = student_modules_for_course_enrollment(
152-
course_enrollment).order_by('modified').last()
152+
# The following are two different ways to avoide the dreaded error
153+
# "Instance of 'list' has no 'order_by' member (no-member)"
154+
# See: https://github.com/PyCQA/pylint-django/issues/165
155+
student_modules = student_modules_for_course_enrollment(ce=course_enrollment)
156+
if student_modules:
157+
most_recent_sm = student_modules.latest('modified')
158+
else:
159+
most_recent_sm = None
153160

154-
most_recent_lcgm = LearnerCourseGradeMetrics.objects.filter(
161+
lcgm = LearnerCourseGradeMetrics.objects.filter(
155162
user=course_enrollment.user,
156-
course_id=str(course_enrollment.course_id)).order_by('date_for').last()
163+
course_id=str(course_enrollment.course_id))
164+
most_recent_lcgm = lcgm.order_by('date_for').last() # pylint: disable=E1101
157165

158166
if _enrollment_metrics_needs_update(most_recent_lcgm, most_recent_sm):
159167
progress_data = _collect_progress_data(most_recent_sm)

0 commit comments

Comments
 (0)