Commit 30cc8db5 by Clinton Blackburn

Updated program search fields

- The content_type field no longer distinguishes between program type.
- The category field can now be used for faceting

ECOM-4943
parent 581c22b2
......@@ -44,6 +44,10 @@ COURSE_RUN_SEARCH_FIELDS = (
'number', 'seat_types', 'image_url', 'type', 'level_type', 'availability',
)
PROGRAM_FACET_FIELD_OPTIONS = {
'category': {},
}
PROGRAM_SEARCH_FIELDS = (
'uuid', 'title', 'subtitle', 'category', 'marketing_url', 'organizations', 'content_type', 'image_url', 'text',
)
......@@ -505,6 +509,7 @@ class CourseRunFacetSerializer(BaseHaystackFacetSerializer):
class ProgramSearchSerializer(HaystackSerializer):
class Meta:
field_aliases = COMMON_SEARCH_FIELD_ALIASES
field_options = PROGRAM_FACET_FIELD_OPTIONS
fields = PROGRAM_SEARCH_FIELDS
ignore_fields = COMMON_IGNORED_FIELDS
index_classes = [ProgramIndex]
......@@ -515,6 +520,7 @@ class ProgramFacetSerializer(BaseHaystackFacetSerializer):
class Meta:
field_aliases = COMMON_SEARCH_FIELD_ALIASES
field_options = PROGRAM_FACET_FIELD_OPTIONS
fields = PROGRAM_SEARCH_FIELDS
ignore_fields = COMMON_IGNORED_FIELDS
index_classes = [ProgramIndex]
......@@ -523,7 +529,7 @@ class ProgramFacetSerializer(BaseHaystackFacetSerializer):
class AggregateSearchSerializer(HaystackSerializer):
class Meta:
field_aliases = COMMON_SEARCH_FIELD_ALIASES
fields = COURSE_RUN_SEARCH_FIELDS
fields = COURSE_RUN_SEARCH_FIELDS + PROGRAM_SEARCH_FIELDS
ignore_fields = COMMON_IGNORED_FIELDS
serializers = {
CourseRunIndex: CourseRunSearchSerializer,
......@@ -537,7 +543,7 @@ class AggregateFacetSearchSerializer(BaseHaystackFacetSerializer):
class Meta:
field_aliases = COMMON_SEARCH_FIELD_ALIASES
field_options = COURSE_RUN_FACET_FIELD_OPTIONS
field_options = {**COURSE_RUN_FACET_FIELD_OPTIONS, **PROGRAM_FACET_FIELD_OPTIONS}
field_queries = COURSE_RUN_FACET_FIELD_QUERIES
ignore_fields = COMMON_IGNORED_FIELDS
serializers = {
......
......@@ -402,7 +402,7 @@ class ProgramSearchSerializerTests(TestCase):
'category': program.category,
'marketing_url': program.marketing_url,
'organizations': [OrganizationsMixin.format_organization(organization)],
'content_type': 'program_{category}'.format(category=program.category),
'content_type': 'program',
'image_url': program.image_url,
}
self.assertDictEqual(serializer.data, expected)
......@@ -114,6 +114,3 @@ class ProgramIndex(OrganizationsMixin, BaseIndex, indexes.Indexable):
marketing_url = indexes.CharField(model_attr='marketing_url', null=True)
organizations = indexes.MultiValueField(faceted=True)
image_url = indexes.CharField(model_attr='image_url', null=True)
def prepare_content_type(self, obj):
return 'program_{category}'.format(category=obj.category)
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