diff --git a/courses/serializers/v2/programs.py b/courses/serializers/v2/programs.py index 101425c141..35551b6bbe 100644 --- a/courses/serializers/v2/programs.py +++ b/courses/serializers/v2/programs.py @@ -24,6 +24,7 @@ class ProgramSerializer(serializers.ModelSerializer): departments = DepartmentSerializer(many=True, read_only=True) topics = serializers.SerializerMethodField() certificate_type = serializers.SerializerMethodField() + required_prerequisites = serializers.SerializerMethodField() def get_courses(self, instance): return [course[0].id for course in instance.courses if course[0].live] @@ -34,6 +35,16 @@ def get_requirements(self, instance): "electives": [course.id for course in instance.elective_courses], } + def get_required_prerequisites(self, instance): + """ + Check if the prerequisites field is populated in the program page CMS. + """ + return bool( + hasattr(instance, "page") + and hasattr(instance.page, "prerequisites") + and instance.page.prerequisites != "" + ) + def get_req_tree(self, instance): req_root = instance.get_requirements_root() @@ -83,6 +94,7 @@ class Meta: "end_date", "enrollment_start", "enrollment_end", + "required_prerequisites", ] diff --git a/courses/serializers/v2/programs_test.py b/courses/serializers/v2/programs_test.py index 49c85f0b41..bfddaa65fc 100644 --- a/courses/serializers/v2/programs_test.py +++ b/courses/serializers/v2/programs_test.py @@ -24,16 +24,25 @@ @pytest.mark.parametrize( "certificate_type", ["MicroMasters Credential", "Certificate of Completion"] ) +@pytest.mark.parametrize("prerequisites", ["program prerequisites", None, ""]) def test_serialize_program( mock_context, remove_tree, certificate_type, + prerequisites, program_with_empty_requirements, # noqa: F811 ): """Test Program serialization""" if certificate_type == "MicroMasters Credential": program_with_empty_requirements.program_type = "MicroMasters®" program_with_empty_requirements.save() + + required_prerequisites = False + if prerequisites is not None: + program_with_empty_requirements.page.prerequisites = prerequisites + if prerequisites != "": + required_prerequisites = True + run1 = CourseRunFactory.create( course__page=None, start_date=now() + timedelta(hours=1), @@ -95,5 +104,6 @@ def test_serialize_program( "end_date": program_with_empty_requirements.end_date, "enrollment_start": program_with_empty_requirements.enrollment_start, "enrollment_end": program_with_empty_requirements.enrollment_end, + "required_prerequisites": required_prerequisites, }, )