Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: [WS-4468] update learning type experiment filter #4340

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 24 additions & 34 deletions course_discovery/apps/course_metadata/algolia_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,25 @@ def get_owners(entry):
return list(filter(lambda owner: owner['logoImageUrl'] is not None, all_owners))


def process_learning_type(product_type):
CERTIFICATES = _('Certificates')
PATHWAYS_TO_DEGREES = _('Pathways to Degrees')

product_map = {
'Boot Camp': _('Boot Camps'),
'Certificate': CERTIFICATES,
'License': CERTIFICATES,
'Professional Certificate': CERTIFICATES,
'XSeries': CERTIFICATES,
'MicroBachelors': PATHWAYS_TO_DEGREES,
'MicroMasters': PATHWAYS_TO_DEGREES,
'Bachelors': _('Bachelor’s'),
'Masters': _('Master’s')
}

return product_map.get(product_type, product_type)


def delegate_attributes(cls):
'''
Class decorator. For all Algolia fields, when my_instance.attribute is accessed, get the attribute off
Expand Down Expand Up @@ -300,26 +319,12 @@ def learning_type_exp(self):
Temporary field used as a variant of `learning_type` for an experiment. If the experiment is successful,
this will replace `learning_type`.
"""
if self.type.slug == CourseType.EXECUTIVE_EDUCATION_2U:
return [_('Certificate courses')]

course_type = process_learning_type(self.product_type)
processed_program_types = []
for program_type in self.program_types:
if program_type in [
'Certificate',
'License',
'Professional Certificate',
'XSeries'
]:
processed_program_types.append(_('Certificate courses'))
elif program_type in ['Bachelors', 'Doctorate', 'Masters']:
processed_program_types.append(_('Degrees'))
elif program_type in ['MicroBachelors', 'MicroMasters']:
processed_program_types.append(_('Paths to degrees'))
else:
processed_program_types.append(program_type)

return [self.product_type, *processed_program_types]
processed_program_types.append(process_learning_type(program_type))

return [course_type, *processed_program_types]

@property
def product_card_image_url(self):
Expand Down Expand Up @@ -572,22 +577,7 @@ def learning_type_exp(self):
this will replace `learning_type`.
"""
if self.type:
if self.type.slug in [
ProgramType.CERTIFICATE,
ProgramType.LICENSE,
ProgramType.PROFESSIONAL_CERTIFICATE,
ProgramType.XSERIES
]:
return [_('Certificate courses')]
if self.type.slug in [
ProgramType.BACHELORS,
ProgramType.DOCTORATE,
ProgramType.MASTERS
]:
return [_('Degrees')]
if self.type.slug in [ProgramType.MICROBACHELORS, ProgramType.MICROMASTERS]:
return [_('Paths to degrees')]
return [self.type.name_t]
return [process_learning_type(self.type.name_t)]
return []

@property
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -524,9 +524,9 @@ def test_learning_type_open_course(self, has_program):
assert course.learning_type == ['Course']

@ddt.data(
(ProgramType.PROFESSIONAL_CERTIFICATE, 'Certificate courses'),
(ProgramType.MASTERS, 'Degrees'),
(ProgramType.MICROBACHELORS, 'Paths to degrees'),
(ProgramType.XSERIES, 'Certificates'),
(ProgramType.MASTERS, 'Master’s'),
(ProgramType.MICROMASTERS, 'Pathways to Degrees'),
)
@ddt.unpack
def test_learning_type_exp_open_course(self, program_type_slug, learning_type):
Expand All @@ -548,8 +548,8 @@ def test_learning_type_non_open_course(self, course_type_slug, expected_result):
assert course.learning_type == [expected_result]

@ddt.data(
(CourseType.EXECUTIVE_EDUCATION_2U, 'Certificate courses'),
(CourseType.BOOTCAMP_2U, 'Boot Camp'),
(CourseType.EXECUTIVE_EDUCATION_2U, 'Executive Education'),
(CourseType.BOOTCAMP_2U, 'Boot Camps'),
)
@ddt.unpack
def test_learning_type_exp_non_open_course(self, course_type_slug, expected_result):
Expand Down Expand Up @@ -875,9 +875,9 @@ def test_learning_type(self):
assert program.learning_type == [program_type.name_t]

@ddt.data(
(ProgramType.PROFESSIONAL_CERTIFICATE, 'Certificate courses'),
(ProgramType.MASTERS, 'Degrees'),
(ProgramType.MICROBACHELORS, 'Paths to degrees'),
(ProgramType.PROFESSIONAL_CERTIFICATE, 'Certificates'),
(ProgramType.MASTERS, 'Master’s'),
(ProgramType.MICROBACHELORS, 'Pathways to Degrees'),
)
@ddt.unpack
def test_learning_type_exp(self, program_type_slug, learning_type):
Expand Down
Loading