Commit 7ea762eb by Ahsan Ulhaq

Average length calculate based on canonical course run

parent 86865d5d
......@@ -818,7 +818,7 @@ class Program(TimeStampedModel):
@cached_property
def _course_run_weeks_to_complete(self):
return [course_run.weeks_to_complete for course_run in self.course_runs
return [course_run.weeks_to_complete for course_run in self.canonical_course_runs
if course_run.weeks_to_complete is not None]
@property
......@@ -851,6 +851,15 @@ class Program(TimeStampedModel):
yield run
@property
def canonical_course_runs(self):
excluded_course_run_ids = [course_run.id for course_run in self.excluded_course_runs.all()]
for course in self.courses.all():
canonical_course_run = course.canonical_course_run
if canonical_course_run and canonical_course_run.id not in excluded_course_run_ids:
yield canonical_course_run
@property
def languages(self):
return set(course_run.language for course_run in self.course_runs if course_run.language is not None)
......
......@@ -600,6 +600,11 @@ class ProgramTests(TestCase):
def test_weeks_to_complete_range(self):
""" Verify that weeks to complete range works correctly """
weeks_to_complete_values = [course_run.weeks_to_complete for course_run in self.course_runs]
for course_run in self.course_runs:
course = course_run.course
course.canonical_course_run = course_run
course.save()
expected_min = min(weeks_to_complete_values) if weeks_to_complete_values else None
expected_max = max(weeks_to_complete_values) if weeks_to_complete_values else None
# property does not have the right values while being indexed
......@@ -632,6 +637,19 @@ class ProgramTests(TestCase):
# Verify that course run is not returned in set
self.assertEqual(set(self.program.course_runs), set(self.course_runs))
def test_canonical_course_runs(self):
course = self.course_runs[0].course
course.canonical_course_run = self.course_runs[0]
course.save()
course = self.course_runs[1].course
course.canonical_course_run = self.course_runs[1]
course.save()
expected_canonical_runs = [self.course_runs[0], self.course_runs[1]]
# Verify only canonical course runs are returned in set
self.assertEqual(set(self.program.canonical_course_runs), set(expected_canonical_runs))
def test_languages(self):
expected_languages = set([course_run.language for course_run in self.course_runs])
actual_languages = self.program.languages
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment