Skip to content

Commit

Permalink
Add required_prerequisites to program API (#2419)
Browse files Browse the repository at this point in the history
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
rachellougee and pre-commit-ci[bot] authored Oct 21, 2024
1 parent 243085c commit 64ca6f4
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
12 changes: 12 additions & 0 deletions courses/serializers/v2/programs.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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()

Expand Down Expand Up @@ -83,6 +94,7 @@ class Meta:
"end_date",
"enrollment_start",
"enrollment_end",
"required_prerequisites",
]


Expand Down
10 changes: 10 additions & 0 deletions courses/serializers/v2/programs_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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,
},
)

0 comments on commit 64ca6f4

Please sign in to comment.